繁体   English   中英

ASP.net mvc3从View到Controller C#获取数据

[英]ASP.net mvc3 Get data from View to Controller C#

我目前正在使用ViewBag将数据表和其他一些动态数据传递给视图。 数据在表中显示给用户,并根据用户选择的列进行某些计算。 我的问题是,这些计算需要链接在一起,以便在用户执行计算时,数据的状态得以保持,然后可以对该数据进行进一步的计算。

如何每次从视图中将当前数据表状态获取到控制器中? 需要在该当前状态下执行计算。

如果有什么不同,我可以轻松地将视图更改为强类型视图,并创建一个新对象来抽象化数据表和其他动态数据。

任何意见欢迎。

谢谢。

在我看来,这听起来像是一些AJAX。 您应该能够将状态发布回服务器(控制器中的另一种方法)并存储它,但是需要这样做。

MVC3有一些很棒的JSON内容,应该可以使您的生活更轻松。 那+ jQuery,你应该在笑。

我鼓励您尽可能避免使用DataTables和DataSet。 他们应该被认为是最糟糕的DTO,因为您永远无法保证它们包含的内容和时间(除非您遵循呼叫链回到其起源,并确保它们在途中没有任何变化)。

通过使用适当的视图模型,您只需查看它们就可以知道它们包含的内容,还可以将所有格式逻辑放入其中,而不是放在视图中。

我写了一篇博客文章,介绍为什么您应该使用视图模型: http//blog.gauffin.org/2011/07/three-reasons-to-why-you-should-use-view-models/

关于您的问题:最简单的方法是使用jQuery / Ajax并返回Json(如果使用正确的视图模型,这很容易)。

<script type="text/javascript">
 $(function() { //<-- runs the script when the document has been loaded

    $('#formid').submit(function() { // <--- hook form submit event

        $.post('@Html.Action("CalcOne")?option='+ $('#id').val(), function(data) {
            var result = data.result;
            $.post('@Html.Action("CalcTwo")?option='+ result, function(data) {
                    //do third calc
            });
        });
    });
 });
</script>

在您的控制器中:

[HttpPost]
public ActionResult CalcOne(int option)
{
    //do some calculations
    return Json(new MyModel{ Result = option + 1 });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM