【问题标题】:client side validation. Prevent posting form客户端验证。防止张贴表格
【发布时间】:2014-07-07 13:05:48
【问题描述】:

我的表单中有一些文本框。当输入无效值时,不显眼的 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" />

}

【问题讨论】:

  • 在表单中包含文本框就可以了。
  • 一些示例代码会有所帮助

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    <form action="..." onsubmit="return validateForm()" method="...">
    ...
    <input type="submit" value="Submit">
    </form>
    

    您可以为您的表单尝试上述代码。 validateForm方法必须返回true,表单才能提交,如果返回false,表单将不提交。

    【讨论】:

      【解决方案3】:

      添加

       onclientclick="return false;"
      

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

       usesubmitbehaviour="false"
      

      选项。 enablevalidation="false" 也应该打破它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-19
        • 2016-03-03
        • 2011-02-08
        • 1970-01-01
        • 2015-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多