【发布时间】:2013-06-18 21:24:06
【问题描述】:
我有一个模型,类似于:
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 的绑定。
【问题讨论】:
-
为什么不覆盖默认模型绑定并包含对
base.CreateModel的调用? -
重写 CreateModel() 并没有让我到任何地方,但我能够重写 BindProperty() 以获得我想要的行为。
标签: asp.net-mvc-4 model-binding