gpt4 book ai didi

asp.net-mvc-3 - asp.net mvc 3.0 客户端验证不起作用

转载 作者:行者123 更新时间:2023-12-04 23:29:12 24 4
gpt4 key购买 nike

这是我的部分 View 中的代码 -

@using (Ajax.BeginForm("SaveLayout", new AjaxOptions { HttpMethod = "Post"}))
{
@Html.ValidationSummary(true)
<div style="padding: 10px;">
<div class="editor-field">
Layout Name: @Html.EditorFor(m => m.Name)
@Html.ValidationMessageFor(m => m.Name)</div>
<br />
<br />
<input type="submit" value="Save" />
<input type="button" onclick="CloseDialog()" value="Cancel" />
</div>
}

在我的 _Layout.cshtml 中看起来像这样 -
<script src="@Url.Content("~/Scripts/JQuery/jquery-1.6.4.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/JQuery/jquery-ui.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/JQuery/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/JQuery/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/JQuery/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

我在我的根 web.config 中有这个 -
<add key="ClientValidationEnabled" value="true"/> 
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>

这就是我的 Controller Action 的样子 -
[HttpPost]
public ActionResult SaveLayout(Model.Layout layout)
{
if (ModelState.IsValid)
{
ILayout.SaveLayout(layout);
}
return PartialView("_SaveLayout", layout);
}

粗略地这是我的模型-
public class Layout : BaseModel
{
[Required(ErrorMessage = "Please assign name to the compare group.")]
public string Name { get; set; }
}

当名称字段为空并且用户点击保存按钮时,我无法让我的客户端验证工作。有人可以建议我在这里做错了什么吗?任何帮助将不胜感激。

最佳答案

一旦您使用表单的新内容更新 DOM,客户端验证就会停止工作,因为它最初附加的所有事件处理程序都死了。这是一个 blog post您可以看看它解释了如何在动态加载的内容中重新附加客户端验证。

基本上,您必须在更新 DOM 时在 AJAX 成功回调中使用 $.validator.unobtrusive.parse 方法以重新附加客户端验证。

关于asp.net-mvc-3 - asp.net mvc 3.0 客户端验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7680566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com