【问题标题】:asp.net mvc ajax EnableClientValidation and parse returned dataasp.net mvc ajax EnableClientValidation 并解析返回的数据
【发布时间】:2011-01-24 18:26:46
【问题描述】:

我将 ajax.beginform 与 EnableClientValidation 一起使用。问题 - 表格在任何情况下都会向控制器发送数据,即使表格不正确 - 有什么问题?

第二个问题-我像这样返回 ajax 数据

return Json(new { value = "msg" });

我如何从视图中的 javascript 解析这些数据?

【问题讨论】:

    标签: asp.net-mvc ajax json validation


    【解决方案1】:
    1. 这是一个详尽的step by step tutorial,解释了如何使用 ASP.NET MVC 2 实现验证以及如何启用客户端验证。如果你正确地遵循它,你应该没有任何问题。

    2. 您可以使用OnSuccess 选项:

      <% using (Ajax.BeginForm("SomeAction", new AjaxOptions {
          OnSuccess = "success"
      })) { %>
      

      success 回调可能如下所示:

      <script type="text/javascript">
      function success(data) {
          alert(data.get_object());
      }
      </script>
      

    更新:

    这是一个工作示例:

    • 型号:

      public class Product
      {
          [Required]
          public string Name { get; set; }
      }
      
    • 控制器:

      public class HomeController : Controller
      {
          public ActionResult Index()
          {
              return View(new Product());
          }
          [HttpPost]
          public ActionResult Index(Product product)
          {
              return Json(new { status = "success" });
          }
      }
      
    • 查看:

      <script type="text/javascript" src="<%= Url.Content("~/scripts/MicrosoftAjax.js") %>"></script>
      <script type="text/javascript" src="<%= Url.Content("~/scripts/MicrosoftMvcAjax.js") %>"></script>
      <script type="text/javascript" src="<%= Url.Content("~/scripts/MicrosoftMvcValidation.js") %>"></script>
      <script type="text/javascript">
      function success(data) {
          alert(data.get_object().status);
      }
      </script>
      
      <% Html.EnableClientValidation(); %>
      <% using (Ajax.BeginForm(new AjaxOptions { OnSuccess = "success" })) { %>
          <%= Html.LabelFor(x => x.Name) %>
          <%= Html.TextBoxFor(x => x.Name) %>
          <%= Html.ValidationMessageFor(x => x.Name) %>
          <input type="submit" value="Create" />
      <% } %>
      

    【讨论】:

    • 我读了这篇文章,我喜欢 hi describe,但它只适用于 html.beginborm,但是当我使用 ajax.beginform-即使客户端验证显示错误,数据也会转到控制器跨度>
    • 请参阅我的更新,说明使用Ajax.BeginForm 进行客户端验证的工作示例。
    • 不,这里是desision,可能你有兴趣。文章 haacked.com/archive/2009/11/19/… 但 cmets 中的解决方案从结尾开始第二条评论
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    相关资源
    最近更新 更多