Ich möchte RenderPartial zweimal in meiner Ansicht mit verschiedenen verbundenen Modellen verwenden. Das Problem ist, dass einige Eigenschaften in beiden Modellen vorhanden sind (Nickname, Passwort). Sie haben kein Präfix, also sind auch die IDs oder Namen in der Ausgabe gleich. Nun, wenn ich Modellfehler für Nickname oder Passwort habe, werden beide Felder hervorgehoben.ASP.NET MVC 2 - ViewModel Prefix
Hauptansicht:
<div>
<% Html.RenderPartial("Register", Model.RegisterModel); %>
</div>
<div>
<% Html.RenderPartial("Login", Model.LoginModel); %>
</div>
Anmeldung 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>
<% } %>
Register 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>
<% } %>
Wie kann ich das ändern?
Sie müssen nicht Ihre eigene Überladung für RenderPartial schreiben, es gibt bereits eine Überladung, die Sie neu definieren können, was die ViewData-Sammlung ist. Sie können einfach Ihr Präfix hinzufügen und Ihr Modell danach suchen lassen. Siehe: http://msdn.microsoft.com/en-us/library/dd470827.aspx – R0MANARMY