C # форма все еще сообщения без обязательных полей - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь сделать поле просмотра обязательным, но по какой-то причине оно не работает (я могу нажать «Отправить», и оно выдает форму POST) без необходимости выбирать значение. Чего мне не хватает?

Просмотр (CardCreate.cshtml)

@model xxx.Models.TicketsViewModels.CardCreateViewModel

<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>
<script src="//ajax.aspnetcdn.com/ajax/mvc/4.0/jquery.validate.unobtrusive.min.js"></script>

<div>
    @Html.LabelFor(m => m.Title)
    @Html.TextBoxFor(m => m.Title)
    @Html.ValidationMessageFor(m => m.Title)
</div>

ViewModel (CardCreateViewModel.cs)

[Required(ErrorMessage = "Title is required")]
[Display(Name = "Title")]
public string Title { get; set; }

Контроллер (TicketsController.cs)

[HttpPost]
public async Task<ActionResult> CardCreate(CardCreateViewModel c)
{
    if (!this.ModelState.IsValid)
    {
        return View("CardCreate", c);
    }
    //adding other data

}

1 Ответ

0 голосов
/ 07 мая 2018

Проверка ASP.NET MVC не на стороне клиента, а на стороне сервера. Ничто не помешает браузеру отправить его. Действия вашего контроллера должны вернуть HTML-представление обратно в браузер с отображенным сообщением проверки:

[HttpGet]
public ActionResult Index()
{
    return this.View( new IndexViewModel() );
}

[HttpPost]
public ActionResult Index( IndexViewModel model )
{
    // Immediately prior to execution entering this `Index` action method, the ASP.NET MVC runtime will populate the `Controller.ModelState` object with information about validation errors in `model`.

    if( !this.ModelState.IsValid )
    { 
        // When the View is rendered the `ValidationMessageFor` helper will inspect the ModelState and show the error message itself, so no custom logic is needed here
        return this.View( model );
    }

    // TODO: Do processing of valid data here

    // Upon successful processing/saving/etc, redirect back to the GET view:
    return this.RedirectToAction( nameof(this.Index) );
}

ASP.NET MVC действительно поставляется с некоторыми сценариями для проверки на стороне клиента, но он является необязательным и не так встроен в платформу, как элементы управления Validation, которые были в ASP.NET WebForms. Однако проверка на стороне клиента предназначена только для удобства ваших посетителей: она не добавляет никакой реальной безопасности, и посетители с отключенным JavaScript не будут видеть сообщения проверки на стороне клиента. Никогда не доверяй клиенту !

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