13

我有这堂课:

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 不起作用?!!只有 ValidationSummary 有效。如果我用产品回应,那么它就可以工作。

4

2 回答 2

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);
}
于 2012-05-21T22:03:42.027 回答
0

在 _Lahout.cshtml 中缺少这一行

@Scripts.Render("~/bundles/jqueryval")

完全的:

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval") <------------ 
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false) 
于 2021-06-02T14:49:58.987 回答