asp.net mvc ajax EnableClientValidation并解析返回的数据

时间:2010-03-07 20:39:31

标签: asp.net-mvc ajax json validation

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

第二个qusion-我返回像这样的ajax数据

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

如何在javascript上解析这些数据?

1 个答案:

答案 0 :(得分:0)

  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>
    

  3. 更新:

    这是一个有效的例子:

    • 型号:

      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" />
      <% } %>