В настоящее время я использую ASP.NET MVC3 RC и использую ненавязчивые проверки JQuery, как описано Брэдом Уилсоном в его блоге .Это прекрасно работает, но когда я отправляю свою форму (в Ajax) на сервер, я делаю некоторые проверки на стороне сервера и возвращаю ту же строку (которая включена в частичное представление), если мое состояние модели недопустимо.2 проблемы с этим:
1-й: Когда я делаю return PartialView
в своем действии, все ненавязчивые атрибуты не отображаются.Я нашел «не элегантный» способ сделать это, но когда я делаю это, проверки клиента нарушаются.После того, как я вернусь из своего действия, даже если я вызову jQuery.validator.unobtrusive.parse()
в моей обновленной строке, $("form").valid()
всегда вернет истину, даже если это не так.
2-й: я хочу, чтобы мой визуализированный вид отображался какстрока на сервере, чтобы я мог отправить ее обратно в 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);
}
Спасибо