Ошибка ModelState: значение 'null' недопустимо для обнуляемого поля - PullRequest
1 голос
/ 08 мая 2019

ModelState выдает ошибку, поскольку пустое поле имеет значение null.

У меня есть модель:

public class PersonModel
{
    public int? ID { get; set; }

    [Required]
    [StringLength(256)]
    public string Title { get; set; }

    [Required]
    [StringLength(256)]
    public string Name { get; set; }

    [Required]
    [StringLength(256)]
    public string Lastname { get; set; }

    [StringLength(1024)]
    public string Description { get; set; }

    public int? OrganizationID { get; set; }

    public string Organization { get; set; }

}

Контроллер:

var errors = ModelState.Where (c => c.Value.Errors.Count > 0).Select (c => c.Value).ToList ();

if (!errors.Any ()) {
    Person entity;

    if (model.ID.HasValue && model.ID > 0) {
        if (!Session.HasClaim (DataCache.Claims.EditPerson))
            return BadRequest ();

        entity = Repository.GetPerson (model.ID.Value);
    } else {
        if (!Session.HasClaim (DataCache.Claims.AddPerson))
            return BadRequest ();

        entity = new Person ();
        Repository.AddPerson (entity);
        if (!model.OrganizationID.HasValue && !string.IsNullOrEmpty (model.Organization)) {
            var organization = new Organization () {
                Title = model.Organization
            };
            Repository.AddOrganization (organization);
            entity.Organization = organization;
        }
    }

    TypeMapper.MapPersonModelToEntity (model, entity);
    Repository.Save ();
}

Переменная 'errors' равна 1. Когда я начал отладку, я увидел эту ошибку

Почему ModelState перехватил ошибку? OrganizationId - это явно поле nullable. Я видел Topic в стеке, но не смог воспользоваться решением, потому что здесь нет Global.asax в .net core.

1 Ответ

2 голосов
/ 08 мая 2019

Ваш код пытается вставить строковые данные 'null' в ваше поле nullable int OrganizationID. Поскольку вас здесь нет, выясните, почему поле OrganizationID получает значение строки 'null' вместо null. Это может быть причиной parsing.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...