【发布时间】:2010-04-01 21:03:23
【问题描述】:
有一些相关的问题,但我找不到有效的答案。
假设我有以下模型:
public class EditorViewModel
{
public Account Account {get;set;}
public string SomeSimpleStuff {get;set;}
}
public class Account
{
public string AccountName {get;set;}
public int MorePrimitivesFollow {get;set;}
}
还有一个扩展 ViewPage<EditorViewModel> 的视图,它执行以下操作:
<%= Html.TextBoxFor(model => model.Account.AccountName)%>
<%= Html.ValidationMessageFor(model => model.Account.AccountName)%>
<%= Html.TextBoxFor(model => model.SomeSimpleStuff )%>
<%= Html.ValidationMessageFor(model => model.SomeSimpleStuff )%>
我的控制器看起来像:
[HttpPost]
public virtual ActionResult Edit(EditorViewModel account)
{ /*...*/ }
如何让 DefaultModelBinder 正确绑定我的 EditorViewModel?没有做任何特别的事情,我得到了一个 EditorViewModel 的空实例,它的所有内容都为 null 或默认值。
我最接近的是手动调用UpdateModel:
[HttpPost]
public virtual ActionResult Edit(EditorViewModel account)
{
account.Account = new Account();
UpdateModel(account.Account, "Account");
// this kills me:
UpdateModel(account);
这成功更新了我的 Account 属性模型,但是当我在 account 上调用 UpdateModel (以获取我的 EditorViewModel 的其余公共属性)时,我得到完全没有帮助的“类型的模型......无法更新。”没有内部异常,所以我不知道出了什么问题。
我该怎么办?
【问题讨论】:
标签: asp.net-mvc-2 defaultmodelbinder