发布MVC表单,调用需要视图模型的控制器操作视图。为什么ViewModel没有被发送到视图?

时间:2015-04-20 00:33:25

标签: c# asp.net-mvc asp.net-mvc-4

我有一个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类型的模型项。

视图引用与将参数传递给视图的控制器操作关联的模型。

1 个答案:

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