我一直在尝试为部分视图启用客户端验证,并且发现自己卡住了。我已经将代码添加到AjaxOptions的OnSuccess属性,但没有任何反应。我应该指出,我对jQuery相对比较陌生,说实话,我努力通过学习,随时了解我的第一个MVC应用程序。如果有人有更好的方式做到这一点,请让我知道。使用AjaxOptions.OnSuccess将客户端验证添加到部分视图
任何帮助将不胜感激。
我的观点的代码如下:
@model NorthwindLight.Models.Order
@using NorthwindLight.HtmlHelpers
@using NorthwindLight.Models
@{
ViewBag.Title ="Create";
AjaxOptions newOpts = new AjaxOptions();
newOpts.UpdateTargetId ="tabledata";
newOpts.InsertionMode =InsertionMode.InsertAfter;
newOpts.OnSuccess ="function (tabledata) {$.validator.unobtrusive.parse($(tabledata));};";
}
<h2>Create</h2>
<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>
@using (Html.BeginForm("Create", "Order", FormMethod.Post, new { name = "mainform", id = "mainform" })) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Order</legend>
... Code for entering Order ommitted for brevity
<legend>Order Details</legend>
<br />
<table>
<thead>
<tr>
<th>Product</th>
<th>Unit Price</th>
<th>Quantity</th>
<th></th>
</tr>
</thead>
<tbody id="tabledata">
@if (Model.OrderDetails == null)
{
@Html.Partial("OrderDetailPartial", new OrderDetail())
}
else
{
foreach (var orderDetail in Model.OrderDetails)
{
@Html.Partial("OrderDetailPartial", orderDetail)
}
}
</tbody>
</table>
@Ajax.ActionLink("New Record", "OrderDetailPartial", newOpts)
</fieldset>
}
<div>
<a href="javascript:document.mainform.submit();">Create</a> |
@Html.ActionLink("Cancel", "Index")
</div>
这里是包含在_Layout.cshtml脚本标记
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/DeleteRow.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/ui.core.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/ui.datepicker.js")" type="text/javascript"></script>
<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>
我见过很多例子的网,似乎与此类似,但我无法让他们中的任何人工作。
这也解决了我的问题。我在@ElieSaber在另一个答案中提到的'@ model'声明之前添加了代码。 (未在下面进行测试) – Jared 2013-01-21 19:35:30