【问题标题】:asp.net mvc 3.0 client validation not workingasp.net mvc 3.0 客户端验证不起作用
【发布时间】:2011-10-06 21:18:09
【问题描述】:

这是我部分视图中的代码 -

@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"/>

这就是我的控制器动作的样子 -

[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; }
}

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

【问题讨论】:

    标签: asp.net-mvc-3 validation razor client


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复。你能告诉我你所说的“动态内容”是什么意思吗?
    • @user979189,插入到 DOM 中的任何内容,在页面加载时最初不是它的一部分。例如,在您的情况下,这是您的局部视图中的 html。
    猜你喜欢
    • 2014-03-25
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    相关资源
    最近更新 更多