Tôi hiện đang sử dụng ASP.NET MVC3 RC và tôi đang sử dụng các xác thực JQuery không phô trương như được mô tả bởi Brad Wilson trên his blog. Nó hoạt động tốt nhưng khi tôi gửi biểu mẫu của tôi (trong Ajax) tới máy chủ, tôi thực hiện một số xác nhận hợp lệ phía máy chủ và trả về cùng hàng (được bao gồm trong một phần xem) nếu trạng thái mô hình của tôi không hợp lệ. 2 vấn đề với điều đó:PartialView và xác thực khách hàng không phô trương không hoạt động
Lần đầu tiên: Khi tôi thực hiện một hành động của mình là return PartialView
, tất cả các thuộc tính không phô trương đều không được hiển thị. Tôi tìm thấy một cách "không thanh lịch" để làm điều đó nhưng khi tôi làm điều đó, xác nhận khách hàng bị hỏng. Sau khi tôi quay trở lại từ hành động của mình, ngay cả khi tôi gọi jQuery.validator.unobtrusive.parse()
trên hàng được cập nhật của mình, $("form").valid()
luôn trả về true ngay cả khi không phải như vậy.
Thứ hai: Tôi muốn chế độ xem được hiển thị của tôi hiển thị dưới dạng chuỗi trên máy chủ để tôi có thể gửi lại trong một JsonResult (ví dụ: myJSonResult.html=RenderPartialToString("partialName",model)
).
Có một tài liệu tham khảo, có quan điểm của tôi (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>
Và hành động điều khiển của tôi:
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);
}
Cảm ơn