我在视图上使用了Html.BeginForm()的表单。我在控制器中有一个ActionResult来处理帖子。我需要的是将结果反馈到视图中。我可以启动新视图,但我不知道如何将数据传递给它,一旦我不知道如何显示它。这就是我在ActionResult中所拥有的。
[HttpPost]
public ActionResult Index(FormCollection collection)
{
ViewBag.Title = "Confirm your order";
return View("OrderConfirmation", collection);
}
如果我只是做一个返回视图(“OrderConfirmation”);它将进入视图所以我知道我有那个工作。我只是不知道如何传递数据。现在我强烈键入相同模型的表单导致错误,因为这个FormCollection显然不一样。如果我删除强类型行,上面的工作,但我不知道如何循环集合。
感谢您的帮助。
答案 0 :(得分:2)
使用ViewModel和强力输入的视图。然后,您可以将模型传递给第二个视图。
public ActionResult Index(Order order)
{
return View("OrderConfirmation", order);
}
ASP.NET MVC将自动创建一个订单实例并从发布的FormCollection中填充属性。
答案 1 :(得分:2)
首先不要使用FormsCollection,它太通用了。如果您需要进行单元测试并访问UpdateModel(),则只需要它。
绑定到模型类型或绑定到params:
public ActionResult Index(SomeModel model) { return View("OrderConfirmation", model); }
或
public ActionResult Index(int key) { SomeModel model = new SomeModel(); UpdateModel(model); return View("OrderConfirmation", model); }顶部视图中的
指定
@model MyAppNameSpace.ViewModels.SomeModel