MVC Ajax.BeginForm

时间:2010-10-29 07:37:45

标签: asp.net-mvc asp.net-ajax

我有一个像这样的ajax形式:

    <% using (Ajax.BeginForm("Comments", "Comments", null, new AjaxOptions {UpdateTargetId="main", OnSuccess="createSuccess" }, new{ @id="main"})) {%>
    <%: Html.ValidationSummary(true, "errors") %>

    <fieldset>
        <legend>Fields</legend>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.Body) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.Body) %>
            <%: Html.ValidationMessageFor(model => model.Body) %>
        </div>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.Name) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.Name) %>
            <%: Html.ValidationMessageFor(model => model.Name) %>
        </div>

        <p>
            <input type="submit" value="Submit" />
        </p>
    </fieldset>

<% } %>

<div id="Success" style="display:none;">
    New entry successfully entered
</div>

<script type="text/javascript">
function createSuccess(context)
{
    if ($(".validation-summary-errors").length > 0) {
        return;
    }

    $('#main').clearForm()
    $('#Success').show();
}

这是检查表单是否成功提交的正确方法吗?如果验证摘要的类名更改怎么办?有更好的方法吗?

感谢

1 个答案:

答案 0 :(得分:0)

你肯定是在正确的轨道上。需要注意的重要一点是,为了填充服务器端验证消息,需要使用Comments操作返回包含上面表单的部分,因为当ajax调用返回时,它将替换任何具有id =“主要的“(你的表格),以及行动的结果。