Как установить значение по умолчанию как пустую строку в модели в приложении asp.net mvc - PullRequest
3 голосов
/ 16 марта 2011

Есть ли способ, которым я могу установить значение по умолчанию как Empty.string в модели.

У меня есть имя столбца в модели, его ненулевое поле в базе данных со значением по умолчанию - Empty.string

есть ли способ установить это свойство по умолчанию в модели для этого столбца?

Спасибо

Ответы [ 3 ]

13 голосов
/ 16 марта 2011

Для этого есть параметр, который можно настроить, переопределив привязку модели по умолчанию следующим образом:

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();

и все, пустые строки.

4 голосов
/ 16 марта 2011
MyProperty {get{return myProperty??""}}
0 голосов
/ 01 декабря 2013

Более чистой альтернативой является предоставление пользовательского ModelMetadataProvider вместо создания ModelBinder, который изменяет ModelMetadata.

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...