【问题标题】:MVC3 Razor/JQuery Client side validation Not WorksMVC3 Razor/JQuery 客户端验证不起作用
【发布时间】:2011-08-23 15:09:46
【问题描述】:

我使用带有 jquery 验证插件的 ASP.NET MVC 3 Razor 来构建注册表单。 所以我包括了这个:

<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript">    </script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

我在我的 Web.config 中添加了以下内容:

<appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

我的 Razor 表单如下所示:

@model bop.Web.Models.ProfileModel

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Page title</h2>
@Html.ValidationSummary(true)
@using (Html.BeginForm("Register", "Profile", FormMethod.Post, new { id = "RegForm" }))
{
    <fieldset>
        <div class="editor-label">
            @Html.LabelFor(model => model.companyName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.companyName)
            @Html.ValidationMessageFor(model => model.companyName)
        </div>
        <div>
        ... here other input fields ...
        </div>
        <a href="#" id="nextbtn1">GO TO STEP 2</a>
    </fieldset>

在底部我有:

<script type="text/javascript">
    $(document).ready(function () {
        $('#nextbtn1').click(function () { // bind click event to link
            $("#RegForm").validate();
            if ($("#RegForm").valid()) {
                var $tabs = $('#tabs').tabs(); // first tab selected
                $tabs.tabs('select', 1); // select second tab
                return false;
            }
        }
    }
</script>

我在点击事件上使用了绑定,因为我的注册表单被拆分为 3 个选项卡,所以我将在第三步中执行提交。

问题是,当我点击“转到第 2 步”按钮时,我收到此错误:

Run-time error in Microsoft JScript: Object does not support this property or method 'validate'

非常感谢您提供有用的指导。

【问题讨论】:

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


    【解决方案1】:

    在检查表单是否有效之前,必须先验证它,所以在if ($("#RegForm").valid()) {行之前插入以下内容:

    $("#RegForm").validate();
    

    【讨论】:

    • 感谢辅导员本,刚刚完成,但现在我收到类似的错误:Microsoft JScript 中的运行时错误:对象不支持此属性或方法“验证”
    • 解决了这个技巧。我将 jquery.validate.js 包含在 _Layout.cshtml 文件中。如果我直接在我的视图中包含该脚本,则一切正常。此外,我认为在布局中包含所有脚本而不是在每个视图中插入它们是正确的。任何的想法?非常感谢。
    • 这很奇怪。我将脚本包含在我的 _Layout.cshtml 文件中,这不是问题。脚本是否位于布局文件的 &lt;head&gt; 元素中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 2012-12-17
    • 2022-07-20
    • 1970-01-01
    相关资源
    最近更新 更多