Quiero usar RenderPartial dos veces en mi vista con diferentes modelos asociados. El problema es que algunas propiedades están presentes en ambos modelos (apodo, contraseña). No tienen prefijo, por lo que incluso los id o los nombres son iguales en la salida. Ahora, si tengo errores de modelo para apodo o contraseña, ambos campos se resaltan.ASP.NET MVC 2 - Prefijo de ViewModel
Vista principal:
<div>
<% Html.RenderPartial("Register", Model.RegisterModel); %>
</div>
<div>
<% Html.RenderPartial("Login", Model.LoginModel); %>
</div>
sesión 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>
<% } %>
Registro 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>
<% } %>
¿Cómo puedo cambiar esto?
No necesita escribir su propia sobrecarga para RenderPartial, ya hay una sobrecarga que le permite redefinir qué es la colección ViewData. Simplemente puede agregar su prefijo y hacer que su modelo lo busque. Ver: http://msdn.microsoft.com/en-us/library/dd470827.aspx – R0MANARMY