【发布时间】:2014-10-22 17:31:57
【问题描述】:
我有一个表单,它应该将数据传递给下一个表单。我的表格 1 方法:
public ActionResult Order()
{
return View();
}
处理程序
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Order(OrderBegin booking)
{
if (ModelState.IsValid)
{
// Here i want to open a new form view and pass the result (booking) to the new form form
return View(booking);
}
return View(booking);
}
但是如何在 (ModelState.IsValid) 之后在处理程序中打开一个新视图,同时保留从表单 1 传递的值。
为了让问题更容易理解,我将解释我在做什么。
首先我制作一个表格,您可以在其中选择一个值(例如产品 1) 如果该值有效,我将显示一个新屏幕,用户可以在其中输入他的姓名并查看产品成本(此处需要来自表格 1 的值来计算成本)。提交此表格 2 后,我在数据库中输入数据(我仍然需要来自表格 1 的值)
【问题讨论】:
-
附带说明,ViewModel 应该代表视图呈现视图所需的一切。我真的建议不要使用 ViewBag,这是将数据传递给视图的一种非常糟糕的方式。
-
谢谢,我稍后会更改。我将 ViewModels 用于 OrderBegin 顺便说一句。将其从问题中删除以避免混淆
-
你的那个视图也被强绑定到 form1 中的这个模型
-
为什么
Order2方法的验证失败?您已经将OrderBegin的值分配给Order2(例如NextValues.CustomerID = booking.CustomerID;),因此如果您已经为这些属性渲染了输入,它们应该可以正常回传。 -
@StephenMuecke 编辑,我添加了一些字段并用 jquery 将它们隐藏,显然隐藏的字段没有通过。
标签: .net asp.net-mvc asp.net-mvc-4 model-binding