我在页面上方的结果表中有一个小的部分Create Person表单。我希望能够将表单发布到服务器,这对于ajax.Beginform没有任何问题。MVC 2 Ajax.Beginform通过返回的HTML + JSON到JavaScript函数
<% using (Ajax.BeginForm("Create", new AjaxOptions { OnComplete = "ProcessResponse" }))
{%>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%=Html.LabelFor(model => model.FirstName)%>
</div>
<div class="editor-field">
<%=Html.TextBoxFor(model => model.FirstName)%>
<%=Html.ValidationMessageFor(model => model.FirstName)%>
</div>
<div class="editor-label">
<%=Html.LabelFor(model => model.LastName)%>
</div>
<div class="editor-field">
<%=Html.TextBoxFor(model => model.LastName)%>
<%=Html.ValidationMessageFor(model => model.LastName)%>
</div>
<p>
<input type="submit" />
</p>
</fieldset>
<%
}
%>
然后在我的控制器,我希望能够回来后部分这仅仅是一个表行 如果创建成功,并且把它添加到表,我可以用jQuery轻松做到。
$('#personTable tr:last').after(data);
但是,如果服务器验证失败我想通过我的后面部分创建人形式与验证错误,并取代现有的创建人形式。
我试图返回JSON数组
控制器:
return Json(new
{
Success = true,
Html= this.RenderViewToString("PersonSubform",person)
});
使用Javascript:
var json_data = response.get_response().get_object();
与合格/不合格标志,并使用下面的孤子呈现为字符串部分但是当表单失败时不会呈现mvc验证控件。
那么,有没有什么办法可以手写我的开箱PartialView(“为personForm”)的JavaScript作为从我ajax.form它回来了?我可以传递一些附加信息作为Json数组,以便我可以判断它的通过或失败,并可能添加消息?
UPDATE
我现在可以通过一个PartialView我的JavaScript的HTML,但我需要通过像ServerValidation一些额外的数据对:真/假和ActionMessage的:“你刚才创建的比尔的人”。理想情况下,我会传递Json数组而不是隐藏字段。
function ProcessResponse(response) {
var html = response.get_data();
$("#campaignSubform").html(html);
}
提前感谢