我使用带有EnableClientValidation的ajax.beginform。问题 - 表格在任何情况下都会向控制器发送数据,即使表格不正确 - 什么是问题?
第二个qusion-我返回像这样的ajax数据
return Json(new { value = "msg" });
如何在javascript上解析这些数据?
答案 0 :(得分:0)
这是一个广泛的step by step tutorial,解释了如何使用ASP.NET MVC 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" />
<% } %>