Das Problem ist: Wenn ich 2 Steuerelemente desselben Typs auf einer Seite einfüge, muss ich unterschiedliche Präfixe für die Bindung angeben. In diesem Fall sind die Validierungsregeln generiert direkt nach dem Formular falsch. Also, wie man Client-Validierung Arbeit für den Fall zu bekommen?:
die Seite enthält:
<%
Html.RenderPartial(ViewLocations.Shared.PhoneEditPartial, new PhoneViewModel { Phone = person.PhonePhone, Prefix = "PhonePhone" });
Html.RenderPartial(ViewLocations.Shared.PhoneEditPartial, new PhoneViewModel { Phone = person.FaxPhone, Prefix = "FaxPhone" });
%>
das Steuerelement ViewUserControl<PhoneViewModel>:
<%= Html.TextBox(Model.GetPrefixed("CountryCode"), Model.Phone.CountryCode) %>
<%= Html.ValidationMessage("Phone.CountryCode", new { id = Model.GetPrefixed("CountryCode"), name = Model.GetPrefixed("CountryCode") })%>
donde Model.GetPrefixed("CountryCode")
gibt nur "FaxPhone.CountryCode" oder "PhonePhone.CountryCode" zurück, je nach Präfix
Und hier sind die Validierungsregeln, die nach dem Formular generiert werden. Sie werden für den Feldnamen "Phone.CountryCode" dupliziert. Während das gewünschte Ergebnis 2 Regeln (erforderlich, Zahl) für jeden der Feldnamen "FaxPhone.CountryCode", "PhonePhone.CountryCode" ist Alt-Text http://www.freeimagehosting.net/uploads/37fbe720bf.png
Die Frage ist eine Art Duplikat von Asp.Net MVC2 Clientside Validierung und doppelte ID's Problem aber der Rat, die IDs manuell zu generieren, ist nicht hilfreich.