Aktualnie używam ASP.NET MVC3 RC i używam dyskretnych walidacji JQuery, jak to opisał Brad Wilson na his blog. Działa wspaniale, ale kiedy wysyłam mój formularz (w Ajax) do serwera, robię pewne weryfikacje po stronie serwera i zwracam ten sam wiersz (który jest zawarty w częściowym widoku), jeśli mój stan modelu jest niepoprawny. 2 problemy z tym:PartialView i dyskretna weryfikacja klienta nie działa
Pierwsza: Kiedy wykonuję return PartialView
w moim działaniu, wszystkie dyskretne atrybuty nie są renderowane. Znalazłem "nie elegancką" metodę, ale kiedy to robię, sprawdzanie poprawności klienta jest zepsute. Po powrocie z działania, nawet jeśli zadzwonię pod numer jQuery.validator.unobtrusive.parse()
w zaktualizowanym wierszu, zawsze zwracam wartość true, nawet jeśli nie jest tak.
2nd: Chcę, aby mój renderowany widok był renderowany jako ciąg znaków na serwerze, aby można było wysłać go z powrotem w JsonResult (np. myJSonResult.html=RenderPartialToString("partialName",model)
).
ma odwołanie, nie ma moim zdaniem (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>
I moje działania kontrolera:
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);
}
Dzięki