在我的自定义 ASP.NET MVC ModelBinder 中,我必须绑定 MyType 类型的对象:
public class MyType
{
public TypeEnum Type { get; set; }
public string Tag { get; set; } // To be set when Type == TypeEnum.Type123
}
在上面的伪代码中,您可以看到我希望仅在“Type”为 Type123 时设置属性“Tag”。
我的自定义 ModelBinder 像这样:
public class CustomModelBinder : DefaultModelBinder
{
protected override void BindProperty(ControllerContext cc, ModelBindingContext mbc, PropertyDescriptor pd)
{
var propInfo = bindingContext.Model.GetType().GetProperty(propertyDescriptor.Name);
switch (propertyDescriptor.Name)
{
case "Type": // ....
var type = (TypeEnum)controllerContext.HttpContext.Request.Form["Type"].ToString();
propInfo.SetValue(bindingContext.Model, name, null);
break;
case "Tag": // ...
if (bindingContext.Model.Type == TypeEnum.Type123) { // Fill 'Tag' }
break;
}
}
我遇到的问题是,在我的自定义 ModelBinder 中,我无法控制 ASP.NET MVC 绑定属性的顺序。
您知道如何指定 ASP.NET MV 填充属性的顺序吗?