我有这堂课:
public class Product
{
[Required(ErrorMessage = "empty name")]
public string Name { get; set; }
[Required(ErrorMessage = "empty description")]
public string Description { get; set; }
}
我有一个ResponseProduct,它显示在视图中:
public class ProductInsertVM
{
public string Message = "Success";
public Product Product;
}
在我看来,我有这个:
@using (Html.BeginForm()){
@Html.ValidationSummary(false)
@Html.TextBoxFor(m => m.Product.Description)
@Html.ValidationMessageFor(m => m.Product.Description)
}
我想知道的是为什么ValidationMessageFor doest'n工作? !只有ValidationSummary有效。如果我使用产品回复,那么它可以正常工作。
答案 0 :(得分:20)
如果满足以下条件,您提供的代码应该可以正常工作。
1)您在视图中引用了jQuery验证脚本
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
2)在表单提交上,您调用ModelState.IsValid属性,从而验证传递给操作方法的模型
[HttpPost]
public ActionResult CarList(CarList model)
{
if (ModelState.IsValid)
{
//Save or whatever you want to do
}
return View(model);
}
答案 1 :(得分:0)
在 _Lahout.cshtml 中缺少这一行
@Scripts.Render("~/bundles/jqueryval")
完成:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval") <------------
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)