使用ASP.NET MVC显示FormCollection

时间:2011-05-11 05:58:30

标签: c# asp.net-mvc-3 view actionresult formcollection

我在视图上使用了Html.BeginForm()的表单。我在控制器中有一个ActionResult来处理帖子。我需要的是将结果反馈到视图中。我可以启动新视图,但我不知道如何将数据传递给它,一旦我不知道如何显示它。这就是我在ActionResult中所拥有的。

[HttpPost]
        public ActionResult Index(FormCollection collection)
        {


            ViewBag.Title = "Confirm your order";
            return View("OrderConfirmation", collection);
        }

如果我只是做一个返回视图(“OrderConfirmation”);它将进入视图所以我知道我有那个工作。我只是不知道如何传递数据。现在我强烈键入相同模型的表单导致错误,因为这个FormCollection显然不一样。如果我删除强类型行,上面的工作,但我不知道如何循环集合。

感谢您的帮助。

2 个答案:

答案 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