如何在Action Method上创建一个参数作为Model Class

时间:2009-10-10 01:18:57

标签: asp.net-mvc

我是asp.net mvc的新手,我偶然发现了一个项目,其中包含一个实际的Model类作为Action Method的参数。它看起来像这样:

public ActionResult Index(PersonFormViewModel person)
{
   id = person.Id; ...etc..
}

有人能指出我在自己的项目中如何实现这样的事情的一些示例吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

实际上这很容易,您的表单元素和模型对象上的名称只需要排列以使自动绑定器工作,或者您可以实现或指定自定义绑定器。 Scott Gu在预览5发布时首次出现在他的博客上写了这篇文章。

http://weblogs.asp.net/scottgu/archive/2008/10/16/asp-net-mvc-beta-released.aspx

http://weblogs.asp.net/scottgu/archive/2008/09/02/asp-net-mvc-preview-5-and-form-posting-scenarios.aspx

另一个很好的例子:

http://www.bradygaster.com/post/ASPNET-MVC-Model-Binding-Example.aspx

答案 1 :(得分:1)

在您的视图中,只需将与模型属性对应的输入作为模型的参数名称的前缀。对于具有简单属性的模型,这应该可行。如果您的模型具有复杂属性(子模型),则可能需要开发自定义模型绑定器。如果你有数组,那么你需要在视图方面做一些额外的格式化(参见Phil Haack's blog)。

 <%= Html.Hidden("Person.Id") %>
 <%= Html.TextBox("Person.FirstName") %>
 <%= Html.TextBox("Person.LastName" ) %>