MVC не проверяет пустую строку

У меня есть файл бритвы, где я определяю html-форму с текстовым полем для строки:

    @using (Html.BeginForm()) {
        @Html.ValidationSummary(true)
        <fieldset>
        <legend>Product</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name)
            @Html.ValidationMessageFor(model => model.Name)
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
        </fieldset>
     }

Проблема заключается в том, что я хочу, чтобы это поле (model.name) не было равно NULL, но проверка бритвы позволяет пустой строке, когда я добавляю пустую строку в модель, она дает ошибку. Любые предложения о том, как просто подтвердить эту строку, чтобы она не была пустой?

Ответ 1

Вероятно, вам нужно установить атрибут DataAnnotation

[Обязательный (AllowEmptyStrings = false)]

поверх вашей собственности, где вы хотите применить проверку.
Посмотрите на этот вопрос здесь
Обязательный атрибут с AllowEmptyString = true в ненавязчивой проверке ASP.NET MVC 3

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

Надеюсь, вы сможете решить свою проблему.

Ответ 2

Как выглядит ваша viewmodel?

Вы можете добавить атрибут DataAnnotation к свойству Name в своей модели просмотра:

public class MyViewModel
{
    [Required(ErrorMessage="This field can not be empty.")]
    public string Name { get; set; }
}

Затем в вашем контроллере вы можете проверить, действительно ли опубликованная модель.

public ActionResult MyAction(ViewModel model)
{
    if (ModelState.IsValid)
    {
        //ok
    }
    else
    {
        //not ok
    }
}