Desidero utilizzare RenderPartial due volte nella mia vista con diversi modelli associati. Il problema è che alcune proprietà sono presenti in entrambi i modelli (nickname, password). Non hanno alcun prefisso, quindi anche l'id o i nomi sono uguali nell'output. Ora, se ho errori di modello per nickname o password, entrambi i campi vengono evidenziati.ASP.NET MVC 2 - Prefisso ViewModel
Vista principale:
<div>
<% Html.RenderPartial("Register", Model.RegisterModel); %>
</div>
<div>
<% Html.RenderPartial("Login", Model.LoginModel); %>
</div>
Accesso PartialView:
<% using (Html.BeginForm("Login", "Member")) { %>
<fieldset>
<legend>Login</legend>
<p>
<%= Html.LabelFor(x => x.Nickname) %>
<%= Html.TextBoxFor(x => x.Nickname) %>
</p>
<p>
<%= Html.LabelFor(x => x.Password) %>
<%= Html.PasswordFor(x => x.Password) %>
</p>
<input type="submit" value="Login" />
</fieldset>
<% } %>
Registrati PartialView:
<% using (Html.BeginForm("Register", "Member")) { %>
<fieldset>
<legend>Register</legend>
<p>
<%= Html.LabelFor(x => x.Nickname) %>
<%= Html.TextBoxFor(x => x.Nickname) %>
</p>
<p>
<%= Html.LabelFor(x => x.Email) %>
<%= Html.TextBoxFor(x => x.Email) %>
</p>
<p>
<%= Html.LabelFor(x => x.Password) %>
<%= Html.PasswordFor(x => x.Password) %>
</p>
<p>
<%= Html.LabelFor(x => x.PasswordRepeat) %>
<%= Html.PasswordFor(x => x.PasswordRepeat) %>
</p>
<input type="submit" value="Register" />
</fieldset>
<% } %>
Come posso cambiare questo?
Non è necessario scrivere il proprio sovraccarico per RenderPartial, c'è già un sovraccarico che consente di ridefinire cosa sia la raccolta ViewData. Puoi semplicemente aggiungere il tuo prefisso lì e far cercare il tuo modello. Vedere: http://msdn.microsoft.com/en-us/library/dd470827.aspx – R0MANARMY