ValidationMessageFor不显示错误

时间:2012-05-21 21:49:06

标签: asp.net-mvc

我有这堂课:

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有效。如果我使用产品回复,那么它可以正常工作。

2 个答案:

答案 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)