有什麼方法可以將默認值設置爲模型中的Empty.string。如何將默認值設置爲模型中的空字符串在asp.net mvc應用程序中
我有一個列名在其默認值的數據庫NOT NULL字段Empty.string
模型是存在的,我可以在此列的模型設置此默認屬性什麼辦法?
感謝
有什麼方法可以將默認值設置爲模型中的Empty.string。如何將默認值設置爲模型中的空字符串在asp.net mvc應用程序中
我有一個列名在其默認值的數據庫NOT NULL字段Empty.string
模型是存在的,我可以在此列的模型設置此默認屬性什麼辦法?
感謝
有這個,你可以通過覆蓋默認的模型綁定如下配置設置:
public sealed class EmptyStringModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
bindingContext.ModelMetadata.ConvertEmptyStringToNull = false;
return base.BindModel(controllerContext, bindingContext);
}
}
然後將其配置爲global.asax中應用程序啓動時的默認模型聯編程序:
ModelBinders.Binders.DefaultBinder = new EmptyStringModelBinder();
並且你去了,沒有更多的空字符串。
myProperty的{{返回myProperty的? 「」}}
更簡潔的替代方案是提供自定義ModelMetadataProvider,而不是創建修改ModelMetadata的ModelBinder。
public class EmptyStringDataAnnotationsModelMetadataProvider : System.Web.Mvc.DataAnnotationsModelMetadataProvider
{
protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName)
{
var modelMetadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);
modelMetadata.ConvertEmptyStringToNull = false;
return modelMetadata;
}
}
如果是的Application_Start()
ModelMetadataProviders.Current = new EmptyStringDataAnnotationsModelMetadataProvider();