我有一个MVC BeginForm
元素发布到控制器操作:
[HttpPost]
public ActionResult Create(FormViewModel Model)
{
... Some form saving logic
return View()
}
但是当索引视图被渲染时,我得到一个'对象引用未设置为对象的实例'错误。
我的索引视图是这样的:
public ActionResult Index()
{
...Create The IndexViewModel
return View(ViewModel)
}
如何在发布后调用控制器动作来生成视图模型?
如果我从HTTP创建调用索引控制器操作,如:
[HttpPost]
public ActionResult Create(FormViewModel Model)
{
... Some form saving logic
return Index()
}
我会得到一个'传递到字典中的模型项是'IndexViewModel'类型,但是这个字典需要一个CreateViewModel
类型的模型项。
视图引用与将参数传递给视图的控制器操作关联的模型。
答案 0 :(得分:1)
在第一个片段中,您没有返回模型(模型将为null,因此访问模型的属性(例如<div>@Model.SomeProperty</div>
将抛出异常)
[HttpPost]
public ActionResult Create(FormViewModel model)
{
... Some form saving logic
return View(model); // change this so you return the model to the view
}
在第3个片段中,您想要重定向到索引方法,它需要
[HttpPost]
public ActionResult Create(FormViewModel Model)
{
... Some form saving logic
return RedirectToAction("Index"); // Change this to redirect to the Index() method
}