12
votes

ASP.NET MVC 2 - PREFIX DE VIEWMODEL

Je veux utiliser RenderPartial deux fois à mon avis avec différents modèles associés. Le problème est que certaines propriétés sont présentes dans les deux modèles (surnom, mot de passe). Ils n'ont pas de préfixe, alors même les identifiants ou les noms sont égaux dans la sortie. Maintenant, si j'ai des erreurs de modèle pour surnom ou mot de passe, les deux champs sont mis en surbrillance.

Vue principale: P>

<% 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>
<% } %>


0 commentaires

4 Réponses :




8
votes

au lieu d'utiliser html.renderpartial code> Vous pouvez utiliser Modèles de l'éditeur qui manipulera les préfixes.

donc dans votre vue principale: p>

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Ns.Models.RegisterModel>" %>

<% 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>
<% } %>


0 commentaires

12
votes

Si vous ne pouvez pas faire une plaque d'éditeurs pour une raison quelconque, vous pouvez le faire à votre vue: xxx

lo et voici, toutes les entrées de votre partialView seront préfixées.

Kudos à R0Manarmy pour le pointant de la sorte.


3 commentaires

et comme une doublure: HTML.RenderPartial ("MyPartialViewName", MyPartialViewModel, Nouvelle vie ViewdAndiction () {TEMPARTINFO = Nouveau TEMPLATEINFO () {HTMLFIELDPREFIX = "MYPREFIXHERE"}})


Si j'utilise la rendu et que cette action renvoie à son tour partielview, ni partielview ni rendu d'une surcharge de vie que je peux voir. J'espérais que ce serait une surcharge sur retour partielview (. Toute suggestion?


NM, découvert, je peux la définir de l'intérieur de l'intérieur, donc je le transmet au point de vue de la vue: @ {viewdata.templateinfo.htmlfieldprefix = Model.Id; } Stackoverflow.com/a/6617869/84206