我注意到ASP.NET MVC 2模型绑定器不会分别将“1”和“0”识别为true
和false
。是否可以扩展模型绑定器全局以识别这些并将它们转换为适当的布尔值?
谢谢!
答案 0 :(得分:9)
线条中的某些东西应该起作用:
public class BBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (value != null)
{
if (value.AttemptedValue == "1")
{
return true;
}
else if (value.AttemptedValue == "0")
{
return false;
}
}
return base.BindModel(controllerContext, bindingContext);
}
}
并在Application_Start
注册:
ModelBinders.Binders.Add(typeof(bool), new BBinder());
答案 1 :(得分:2)
结帐this link。它显然适用于MVC2。
您可以执行类似(未经测试)的操作:
public class BooleanModelBinder : IModelBinder {
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) {
ValueProviderResult value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
// do checks here to parse boolean
return (bool)value.AttemptedValue;
}
}
然后在应用程序的global.asax上添加:
ModelBinders.Binders.Add(typeof(bool), new BooleanModelBinder());