Il problema è: quando metto 2 controlli dello stesso tipo su una pagina ho bisogno di specificare prefissi diversi per il binding. In questo caso le regole di convalida generate subito dopo il modulo non sono corrette. Così come ottenere il lavoro di convalida del client per il caso ?:Asp.Net MVC2 Clientside Problema di convalida con i comandi con prefissi
la pagina contiene:
<%
Html.RenderPartial(ViewLocations.Shared.PhoneEditPartial, new PhoneViewModel { Phone = person.PhonePhone, Prefix = "PhonePhone" });
Html.RenderPartial(ViewLocations.Shared.PhoneEditPartial, new PhoneViewModel { Phone = person.FaxPhone, Prefix = "FaxPhone" });
%>
il ViewUserControl controllo <PhoneViewModel>:
<%= Html.TextBox(Model.GetPrefixed("CountryCode"), Model.Phone.CountryCode) %>
<%= Html.ValidationMessage("Phone.CountryCode", new { id = Model.GetPrefixed("CountryCode"), name = Model.GetPrefixed("CountryCode") })%>
dove Model.GetPrefixed("CountryCode")
solo restituisce "FaxPhone.CountryCode" o "PhonePhone.CountryCode" a seconda del prefisso
Ed ecco le regole di convalida generate dopo il modulo. Sono duplicati per il nome del campo "Phone.CountryCode". Mentre il risultato desiderato è di 2 regole (richiesto, numero) per ciascuna delle FieldNames "FaxPhone.CountryCode", "PhonePhone.CountryCode" alt text http://www.freeimagehosting.net/uploads/37fbe720bf.png
La domanda è un po 'duplicato di Asp.Net MVC2 Clientside Validation and duplicate ID's problem ma i consigli di generare manualmente ids doesn aiuta
Bello. Questa risposta è stata molto utile. Vorrei poterlo alterare ancora un paio di volte. –
Molto, molto utile. Grazie. – Luke
So che questa è una vecchia risposta, ma mi chiedevo se il tuo metodo è preferibile per mettere questo nella tua vista: ViewData.TemplateInfo.HtmlFieldPrefix = "myViewModel.MyCustomObjdect"; –