.net core modelstate допустимо даже с пустыми обязательными полями - PullRequest
0 голосов
/ 10 октября 2019

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

public class FieldMapViewModel
{
    public int Id { get; set; }
    [Range(1, int.MaxValue, ErrorMessageResourceName = "RangeErrorMessage", ErrorMessageResourceType = typeof(Resources))] public int FeedId { get; set; }
    [Range(1, int.MaxValue, ErrorMessageResourceName = "RangeErrorMessage", ErrorMessageResourceType = typeof(Resources))] public int FieldId { get; set; }
    [Required(ErrorMessageResourceName = "RequiredErrorMessage", ErrorMessageResourceType = typeof(Resources)), StringLength(100, ErrorMessageResourceName = "StringLengthErrorMessage", ErrorMessageResourceType = typeof(Resources))] public string Path { get; set; }
}

Как видите, Path требуется, а FieldId и FeedId имеютдиапазон от 1 до int.MaxValue. Итак, в моем контроллере эта строка должна возвращать BadRequest

if (!ModelState.IsValid) return BadRequest(ModelState);

Но это не так. Модель, которую я передал, выглядит следующим образом:

enter image description here

ModelState должен дать сбой как для FieldId , так и для Путь в этом случае. Вот полный код:

/// <summary>
/// Creates a new fieldMap
/// </summary>
/// <param name="fieldMap">The fieldMap</param>
/// <returns></returns>
[HttpPost]
[ProducesResponseType(typeof(FieldMap), StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<IActionResult> CreateAsync(FieldMapViewModel fieldMap)
{
    if (fieldMap == null) return BadRequest();
    if (!ModelState.IsValid) return BadRequest(ModelState);

    var request = ModelFactory.Create(fieldMap);

    _fieldMapService.Create(request);
    await _fieldMapService.SaveChangesAsync();

    return Created(nameof(Get), new Sxp.Web.ActionResult<FieldMap>(request, string.Format(Resources.EntityCreated, "fieldMap")));
}

Может кто-нибудь сказать мне, почему его не подобрали?

...