![](/img/trans.png)
[英]c# asp.net core mvc passing data from view to controller and from controller back to view
[英]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.