MVC 5 Foolproof客户端验证
本文关键字:验证 客户端 Foolproof MVC | 更新日期: 2023-09-27 18:23:53
我在使用nuget万无一失包进行客户端验证时遇到了问题。
我的型号
public class Item {
public int Id { get; set; }
[Required]
public double Quantity { get; set; }
[RequiredIfNotEmpty("Quantity")]
public string LocationCode { get; set; }
public IEnumerable<SelectListItem> LocationList { get; set; }
}
在我看来,我有
@model IList<MyApp.Models.Item>
<!-- some HTML -->
@for(int i = 0; i < Model.Count; i++)
{
<tr>
<td>
@Html.DropDownListFor(p => p[i].LocationCode, Model[i].LocationList, string.Empty, new { @class = "form-control" })
@Html.ValidationMessageFor(p => p[i].LocationCode)
</td>
<td>
@Html.TextBoxFor(p => p[i].Quantity, new { @class = "form-control"})
@Html.ValidationMessageFor(p => p[i].Quantity)
</td>
</tr>
}
在我的_Layout.chtml中,我包含了以下捆绑包:
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/bundles/jqueryval")
@RenderSection("scripts", required: false)
我的jqueryval捆绑包是这样的:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*",
//"~/Scripts/MvcFoolproofJQueryValidation.min.js",
"~/Scripts/mvcfoolproof.unobtrusive.min.js"
//"~/Scripts/MvcFoolproofValidation.min.js"
));
在我的web.config中,我有:
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
我尝试过使用mvcfoolproof js文件的不同组合,但我根本无法使客户端验证工作。对于"数量"文本框,它正在工作。请注意,服务器端正在工作。
尝试将模型从IList更改为MyApp.Models.Item,并仅将一个项从控制器传递到视图。然后客户端验证应该可以工作。我认为@for()循环是个问题——你有多个"数量"字段,剃刀无法选择正确的字段。