Привяжите пустую строку к Guid.Empty или избегайте ошибки состояния модели

Когда я отправляю форму с пустой строкой "" для поля Guid я получаю сообщение об ошибке «Поле MyGuid является обязательным». хотя я не установил атрибут «Обязательный».

//NOT Required   
public Guid MyGuid { get; set; }

после привязки модели Guid будет 00000000-0000-0000-0000-000000000000 (потому что это значение по умолчанию), и это правильно. Но в ModelState есть указанная ошибка.

Как я могу избежать этой ошибки?

Дополнительная информация :

Решением было бы переопределить DefaultModelBinder . И никакие ошибки не будут добавлены в состояние модели

public class MyModelBinder : DefaultModelBinder
{
    protected override void SetProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor, object value)
    {
        if (propertyDescriptor.PropertyType == typeof(Guid) && value == null)
        {
            value = Guid.Empty;
        }
        base.SetProperty(controllerContext, bindingContext, propertyDescriptor, value);

    }
}
5
задан Fabiano 27 July 2017 в 09:10
поделиться