9
我已經注意到與ASP.NET MVC 2模型聯編程序將分別不識別「1」和「0」true
和false
。是否有可能擴展模型聯編程序全球識別這些並將它們轉換爲適當的布爾值?擴展ASP.NET MVC 2模型綁定器工作0,1布爾值
謝謝!在電線之間
我已經注意到與ASP.NET MVC 2模型聯編程序將分別不識別「1」和「0」true
和false
。是否有可能擴展模型聯編程序全球識別這些並將它們轉換爲適當的布爾值?擴展ASP.NET MVC 2模型綁定器工作0,1布爾值
謝謝!在電線之間
的東西應該做的工作:
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());
退房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());
什麼是使用`IModelBinder` VS`DefaultModelBinder`您的想法? – 2011-01-24 20:21:43
@Josiah,我的想法是,`DefaultModelBinder`我有一個小問題擔心(默認情況下)。如果我使用IModelBinder,我還必須處理值等於True或False的情況,並且此情況已由默認模型聯編程序處理,因此它是DRYer。 – 2011-01-24 20:23:43