Как отключить проверку на стороне клиента на страницах .NET Core Razor?

#javascript #jquery #asp.net-core #kendo-ui

Вопрос:

У меня есть модель представления ниже. Ничто не помечено как необходимое, но я не могу отправить форму, к которой она прикреплена, так как она всегда жалуется, что требуемое поле не заполнено. Это происходит, даже если я заполняю все доступные поля. Элементы управления, к которым привязана модель, являются элементами управления кендо. Я не уверен, что это имеет какой-либо эффект.

 public class EmployeePlanAttributesModel
{
    public int EmployeeAttributesId { get; set; }
    public int EmployeeId { get; set; }
    public decimal? Rate { get; set; }
    public DateTime EffectiveDate { get; set; }
}
 

Можно ли отключить проверку на стороне клиента в javascript?

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

 $('#EffectiveDate').rules('remove');
$('#Rate').rules('remove');
 

Ответ №1:

На страницах razor для отключения проверки на стороне клиента.Используйте это:-

 services.Configure<HtmlHelperOptions>(o => o.ClientValidationEnabled = false);
 

Смотрите этот документ.

Комментарии:

1. Я хочу отключить его только для этого экрана.

Ответ №2:

Поскольку ни один ответ не помечен как правильный, я хочу попробовать .

Возможно, у вас есть форма, и в html упоминается, что ввод должен быть, скажем, датой

 <input type="date" ....
 

Которые заставляют браузер выполнять проверку!

Ответ №3:

Попробуйте сделать свойства модели недействительными.

 public class ModelWithNullable
    {
        public int Id { get; set; }
        [Required]
        public string Name { get; set; }

        public DateTime? Date { get; set; }
    }
 

Я также использую две проверки. Проверка JavaScript в представлении

 <form method="post">

    <!--Name-->
    <div class="form-group">
        <label asp-for="MyProperty.Name"></label>
        <input asp-for="MyProperty.Name" class="form-control" />
        @Html.ValidationMessageFor(model => model.MyProperty.Name, "", new { @class = "text-danger" })
    </div>
    <!--Description-->
    <div class="form-group">
        <label asp-for="MyProperty.Date"></label>
        <input asp-for="MyProperty.Date" class="form-control" />
        @Html.ValidationMessageFor(model => model.MyProperty.Date, "", new { @class = "text-danger" })
    </div>

    <button type="submit" class="btn btn-primary">Save</button>


</form>

@section Scripts {
    <partial name="_ValidationScriptsPartial" />

}
 

и ModelState в OnPost

  if (ModelState.IsValid)
            {
                return RedirectToPage("/Index");
            }
 

и это работает должным образом. Возвращает модель с нулевой датой. Просто не забудьте проверить значение null при отображении модели, в противном случае вы получите исключение.

Комментарии:

1. Упоминается ли такое поведение в официальной документации?

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

3. @OneNeptune docs.microsoft.com/en-us/ef/core/modeling/…