客户端验证。防止发布表格

时间:2014-07-07 13:05:49

标签: c# javascript jquery asp.net-mvc

我的表单中有一些文本框。当输入无效值时,不显眼的jquery验证工作,并使框变为红色。但是,当我单击提交表单时,表单将发布回服务器。为什么呢?

是不是因为文本框不是在视图顶部声明的模型?

如何阻止发布表单?

    @model Dictionary<Project, List<ProjectActualCapacity>>


@{
    var model = Model.ToList();
}


@using (Html.BeginForm("ProjectActualCapacityIndex", "Project", FormMethod.Post))
{
    <hr />
    @Html.ValidationSummary(true)
@for (int i = 0; i < model.Count(); i++)
{
    <tr>
        <td>
            @Html.DisplayFor(r => model[i].Key.Name)
        </td>
        @for (int j = 0; j < 12; j++)
        {
            {
                <td>
                    @Html.TextBoxFor(r => model[i].Value[j].Hours, new { @class = "form-control input-sm text-right" })
                    @Html.HiddenFor(r => model[i].Value[j].ID)
                </td>
            }
            @Html.HiddenFor(r => model[i].Key.ID)
        }

    </tr>
}

<input type="submit" value="Set Values" class="btn btn-default" />

}

3 个答案:

答案 0 :(得分:1)

确保您的web.config中有CliventValidationEnabled和UnobstrusiveJavaScriptEnabled,见下文。

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

答案 1 :(得分:0)

<form action="..." onsubmit="return validateForm()" method="...">
...
<input type="submit" value="Submit">
</form>

您可以针对表单尝试上述代码。对于要提交的表单,validateForm方法必须返回true,如果返回false,则表单将不会提交。

答案 2 :(得分:0)

添加

 onclientclick="return false;"

按钮应该停止发布(总是,你需要在这里添加你的逻辑以使其可选)和

 usesubmitbehaviour="false"

选项。还有enablevalidation =&#34; false&#34;应该打破它。