Строковое поле обязательно для заполнения. даже если в Asp. Net Core нет обязательного атрибута? - PullRequest
1 голос
/ 08 февраля 2020

Я создаю простое Asp. Net Базовое приложение в linux (pop os). Я использую VueJs + Aps. Net Core 3.1.101. Я пытаюсь выполнить вызов POST для моего приложения, и моя модель выглядит следующим образом:

public class AddConfigurationContextValueApiRequest
{
    public int ContextId { get; set; }

    [Required(ErrorMessage = "Value is required to continue")]
    [StringLength(500, ErrorMessage = "Value can not be longer than 500 characters")]
    public string Value { get; set; }

    [StringLength(500, ErrorMessage = "Display name can not be longer than 500 characters")]
    public string DisplayName { get; set; } 
}

Как вы можете видеть, что нет Атрибут Required для поля DisplayName, но всякий раз, когда я передаю значение null из приложения VueJS для этого поля, я получаю The DisplayName field is required..

Я пытаюсь выяснить, почему As pNet Основные жалуются на это, так как для такого поля нет атрибута Required!

Кто-нибудь знает, намеренно ли это? Я попытался удалить атрибут StringLength, но он все еще вызывает требуемый атрибут.

Мое действие довольно простое:

[HttpPost(UrlPath + "addConfigurationContextValue")]
public async Task AddConfigurationContextValue([FromBody]AddConfigurationContextValueApiRequest request)
{
    using var unitOfWork = _unitOfWorkProvider.GetOrCreate();
    if (!ModelState.IsValid)
    {
        //Here it throws because ModelState is invalid
        throw new BadRequestException(ModelState.GetErrors());
    }

    //do stuff

    await unitOfWork.CommitAndCheckAsync();
}

1 Ответ

1 голос
/ 09 февраля 2020

После предложения @ devNull я узнал, что каким-то образом, пока я играл с Rider IDE, кажется, он включил эту функцию!

В райдере есть опция, которая позволяет изменить эту конфигурацию на уровне проекта:

Если у кого-то возникла такая же проблема: щелкните правой кнопкой мыши на уровне проекта, go в свойствах, приложении и там вы увидите эту конфигурацию.

Спасибо @devNull за помощь :)

enter image description here

...