【问题标题】:Ajax Form Validation Messages don't showAjax 表单验证消息不显示
【发布时间】:2015-10-01 09:40:36
【问题描述】:

这是我第一次在 Asp.Net MVC-4 中进行验证。

这里的问题是验证消息不显示 即使我发布空表单也是必填字段。

这是我使用的表格:

@using (Ajax.BeginForm("Save","DSA",
    new AjaxOptions { OnSuccess = "OnSuccess", OnFailure = "OnFailure" }))
{
    @Html.TextBoxFor(m => m.Insert_DSA.DSAId)
    @Html.ValidationMessageFor(m => m.Insert_DSA.DSAId)

    @Html.TextBoxFor(m => m.Insert_DSA.Firstname)
    @Html.ValidationMessageFor(m => m.Insert_DSA.Firstname)

<input type="submit" value="Save" />
}

在模型类中:

 [Required(ErrorMessage = "DSA ID is required")]
    public string DSAId { get; set; }

  [Required(ErrorMessage = "First Name is required")]
    public string Firstname { get; set; }

这是控制器:

public ActionResult Save(Models.clsDSAMaster MyModel,string submit)
  {
      string data = "";

      if (ModelState.IsValid)
      {
          MyModel.Insert_DSA.addDSA(MyModel.Insert_DSA, Session["EmpCode"].ToString());
          data="success"; 

      }
     else
     {
         data="Faliure";
     }


     return Content(data, "text/html");
  }

任何人都可以帮我让它工作,并启发我一点关于验证在 MVC 中的工作原理。

P.S :模型绑定和表单提交上模型的数据检索工作正常。

【问题讨论】:

  • 您是否包含相关脚本? (jquery.validate.jsjquery.validate.unobtrusive.js)。而且您的Ajax.BeginForm() 没有指定要更新的目标元素,因此return Content(data, "text/html"); 不会做任何事情
  • 是的,我已经添加了 JS 文件
  • @StephenMuecke 那么如何指定目标元素
  • 如果您已经正确添加了文件,如果表单无效则不会提交。您需要添加 UpdateTargetId AjaxOption 并指定要显示数据的元素的 id - 但这只会显示“成功”或“失败”(原文如此),因为这就是您的方法返回的全部
  • @StephenMuecke“如果表单无效,表单将不会提交”这正是我想要的,并且应该为相应的元素显示验证消息。这也会发生吗?

标签: asp.net-mvc validation asp.net-mvc-4


【解决方案1】:

您必须启用不显眼的 JavaScript。您可以在配置文件中进行:

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

或者您也可以通过代码打开它:

HtmlHelper.ClientValidationEnabled = true;
HtmlHelper.UnobtrusiveJavaScriptEnabled = true;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    相关资源
    最近更新 更多