0

我有一个模型,例如:

public class PageModel {
  public string PropA { get; set; }
  public string PropB { get; set; }      
  public Type DataType { get; set; }

  public PageModel() {}
  ...
}

我的观点是这样的:

...
@using (Html.BeginForm()) {
  <li>@Html.LabelFor(m => m.PropA) <br /> @Html.TextBoxFor(m => m.PropA)</li>
  <li>@Html.LabelFor(m => m.PropB) <br /> @Html.TextBoxFor(m => m.PropB)</li>
  <li>@Html.LabelFor(m => m.DataType) <br /> @Html.TextBoxFor(m => m.DataType)</li>
  <li><input type="submit" /></li>
}
...

使用默认模型绑定,String 属性设置正确,但 Type 属性最终为 NULL,即使提供了有效的 Type 字符串表示(例如“System.String”或“System.Boolean”)。

有关如何正确绑定此 Type 属性的任何建议?特定类型的自定义模型绑定器似乎是最好的方法,但我不想重写 PropA 和 PropB 的绑定。

4

1 回答 1

1

根据 Ant P 的评论,我实现了一个继承自 DefaultModelBinder 的模型绑定器,并覆盖了 BindProperty()

有关详细信息,请参阅http://dotnetslackers.com/articles/aspnet/Understanding-ASP-NET-MVC-Model-Binding.aspx#s11-custom-binding-with-only-few-properties

谢谢蚂蚁P!

于 2013-06-18T13:24:06.990 回答