帮助jquery ajax发布和服务器端验证消息

时间:2010-04-06 05:47:44

标签: jquery asp.net-mvc ajax

任何人都知道jquery axax post的工作样本,并且从服务器返回验证消息,突出显示相关的表单字段?

表格应该是局部视图吗?是否可以使用modelstate?

干杯

2 个答案:

答案 0 :(得分:2)

正如您所建议的那样,最简单的方法是将整个表单放入局部视图并对控制器操作执行ajax请求,该操作返回此部分。如果在此部分中使用验证助手,将显示错误消息。

另一种方法是发布到控制器操作,该操作将所有错误消息放在JSON数组中并将其传递给视图。然后使用javascript,您可以遍历错误消息并显示它们。

答案 1 :(得分:1)

附带示例:

<强>部分:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<div id="subContent">
<fieldset>
    <legend>Subscribe</legend>    
    <form id="subForm" method="post" action="<%= Url.Action("Subscribe") %>">
        <%= Html.ValidationSummary("Subscribe was unsuccessful. Please correct the errors and try again.") %>
        <input type="text" name="name" id="name" /><%= Html.ValidationMessage("name", "*") %>
        <input type="submit" />
    </form>
</fieldset>
</div>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
    $('#subForm').live('submit', function() {
        $.post($(this).attr('action'), $(this).serialize(), function(data) {
            $("#subContent").replaceWith($(data));
        });
        return false;
    });
});
</script>

控制器:

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Subscribe(string name)
        {
            ModelState.AddModelError("name", "You must enter a name");
            return PartialView("SubscribeForm");
        }