Я хочу использовать RenderPartial дважды в моем представлении с различными связанными моделями. Проблема в том, что некоторые свойства присутствуют в обеих моделях (псевдоним, пароль). У них нет префикса, поэтому даже идентификаторы или имена равны на выходе. Теперь, если у меня есть ошибки модели для псевдонима или пароля, оба поля будут выделены.ASP.NET MVC 2 - Префикс префикса ViewModel
Главная Вид:
<div>
<% Html.RenderPartial("Register", Model.RegisterModel); %>
</div>
<div>
<% Html.RenderPartial("Login", Model.LoginModel); %>
</div>
Войти 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>
<% } %>
Регистрация 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>
<% } %>
Как я могу изменить это?
Вам не нужно писать собственную перегрузку для RenderPartial, есть перегрузка, позволяющая вам переопределить, что такое коллекция ViewData. Вы можете просто добавить свой префикс туда и попросить свою модель. См. Http://msdn.microsoft.com/en-us/library/dd470827.aspx – R0MANARMY