#asp.net-mvc #unobtrusive-validation
Вопрос:
Похоже, у меня возникли проблемы с проверкой моей модели. Проверка поля «Название», похоже, не работает, в то время как проверка «Цена», похоже, работает нормально. Кроме того, на других страницах проверка, похоже, нормально работает с текстовыми полями, просто у меня проблема с этой страницей. Я слишком долго смотрел на это, так что был бы очень признателен за любую помощь.
Моя Модель
public class Product
{
public int Id { get; set; }
[Required(ErrorMessage = "This is Required Field")]
public string Title { get; set; }
public string Color { get; set; }
[Required(ErrorMessage = "This is Required Field")]
public decimal Price { get; set; }
}
Этот Вид
@using (Html.BeginForm())
{
<table>
<tr>
<td>
<label>Title:</label></td>
<td>@Html.EditorFor(m => m.Title)</td>
<td>@Html.ValidationMessageFor(m => m.Title)</td>
</tr>
<tr>
<td>
<label>Color:</label></td>
<td>@Html.EditorFor(m => m.Color)</td>
<td>@Html.ValidationMessageFor(m => m.Color)</td>
</tr>
<tr>
<td>
<label>Price:</label></td>
<td>@Html.EditorFor(m => m.Price)</td>
<td>@Html.ValidationMessageFor(m => m.Price)</td>
</tr>
</table>
<button type="submit">Submit</button>
}
Действие
[HttpPost]
public ActionResult Add(Product model)
{
if(ModelState.IsValid)
{
return RedirectToAction("Index");
}
return View(model);
}
У меня в файле web.config для ClientValidationEnabled и UnobtrusiveJavaScriptEnabled установлено значение true.
У меня также есть следующее в заголовочном файле
<script src="/Scripts/jquery-3.3.1.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>
Ответ №1:
попробуйте добавить итог проверки
@using (Html.BeginForm())
{
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
.....
}
и поскольку десятичная дробь не может быть обнулена, по умолчанию она равна 0, поэтому запрос не будет работать, так как он не равен нулю. Поскольку это поле цены, попробуйте это , оно используется для валюты
[DataType(DataType.Currency)]
[RegularExpression(@"^d .?d{0,2}$", ErrorMessage = "Wrong format")]
public decimal Price { get; set; }
Комментарии:
1. Извините @Serge, но это не сработало. Поле заголовка по — прежнему отказывается проверяться, если оставить его пустым