0

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

[HttpPost]
        public ActionResult Index(FormCollection collection)
        {


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

如果我只是做一个 return View("OrderConfirmation"); 它会进入视图,所以我知道我得到了那个工作。我只是不知道如何传递数据。现在,我将它强类型化到与表单相同的模型中,这会导致错误,因为这个 FormCollection 显然不一样。如果我删除了上面的强类型行,但我不知道如何在那个时候遍历集合。

谢谢您的帮助。

4

2 回答 2

2

首先不要使用 FormsCollection,它太通用了。只有在需要单元测试和访问 UpdateModel() 时才需要它。

绑定到模型类型或绑定到参数:

公共 ActionResult 索引(SomeModel 模型)
{
  return View("OrderConfirmation", model);
}

或者

公共 ActionResult 索引(int 键)
{
   SomeModel 模型 = 新的 SomeModel();
   更新模型(模型);
  return View("OrderConfirmation", model);
}

在顶部的视图中指定

@model MyAppNameSpace.ViewModels.SomeModel
于 2011-05-11T06:30:31.003 回答
2

使用 ViewModel 和强类型视图。然后您可以将模型传递给第二个视图。

public ActionResult Index(Order order)
{
  return View("OrderConfirmation", order);
}

ASP.NET MVC 将自动创建一个订单实例并从发布的 FormCollection 中填充属性。

于 2011-05-11T06:09:10.883 回答