PartialView和不显眼的客户端验证无法正常工作

时间:2010-11-15 18:50:25

标签: jquery asp.net-mvc validation

我目前正在使用ASP.NET MVC3 RC,而我正在使用Brad Wilson在his blog所描述的不显眼的JQuery验证。它工作得很好但是当我将表单(在Ajax中)发送到服务器时,如果我的模型状态无效,我会进行一些服务器端验证并返回相同的行(包含在局部视图中)。 2个问题:

1st:当我在我的动作中执行return PartialView时,所有不显眼的属性都不会被渲染。我发现了一种“非优雅”的方式,但是当我这样做时,客户端验证就会被破坏。从我的操作返回后,即使我在更新的行上调用jQuery.validator.unobtrusive.parse()$("form").valid()也始终返回true,即使情况并非如此。

第二:我希望我的渲染视图在服务器上呈现为一个字符串,这样我就可以将它发送回JsonResult(例如:myJSonResult.html=RenderPartialToString("partialName",model))。

有参考,有我的观点(editInvitation):

<td>
    <%= Html.HiddenFor(x=>x.ID,new{id="ID"}) %>
    <%= Html.HiddenFor(x=>x.GroupID,new{id="GroupID"})  %>
    <%: Html.TextBoxFor(x => x.Name, new { id = "Name" })%><%:Html.ValidationMessageFor(x=>x.Name) %>
</td>
<td>
    <%: Html.TextBoxFor(x => x.Email, new { id = "Email" })%>  <%:Html.ValidationMessageFor(x=>x.Email) %>
</td>
<td>
    <%: Model.Status.ToFriendlyName()%>
</td>
<td>
  <%= InvitationsViewModel.RenderActions(Model, Html, InvitationsViewModel.CreateRowID(Model.ID))%>
</td>

我的控制器动作:

if (TryUpdateModel(invitation))
{
    validModel = true;
    //Other stuff
}
if (Request.IsAjaxRequest())
{
     //TODO : I return a partial view but I would prefer to return a JSonResult with the rendered view as a string in an Property of my JSon result
     return PartialView(validModel ? "DisplayInvitation" : "EditInvitation", invitation);
}

由于

1 个答案:

答案 0 :(得分:4)