2013-03-01 3 views
0

Je veux obtenir le "Nom" et "Valeur" d'une liste déroulante à partir d'une vue de rasoir MVC3. Quelle est la meilleure approche s'il vous plaît?mvc3, obtenir le nom et les valeurs à partir des listes déroulantes dans Razor Views?

Code de Razor:

 <div class="editor-label"> 
      @Html.LabelFor(model => model.Occupation) 
     </div> 
     <div class="editor-field"> 
      @Html.DropDownListFor(model => model.Occupation.PK, Model.GetLUV("Occupation",Model.Occupation.PK)) 
     </div> 

Résultante HTML:

 <div class="editor-label"> 
      <label for="Occupation">Occupation</label> 
     </div> 
     <div class="editor-field"> 

      <select id="Occupation_PK" name="Occupation.PK"><option value="17">IT</option> 
       <option value="18">Accountant</option> 
       <option selected="selected" value="19">Solicitor</option> 
      </select> 
      <span class="field-validation-valid" data-valmsg-for="Occupation" data-valmsg- replace="true"></span> 
     </div> 

IE Je veux stocker PK = 17 et profession = "IT", pas seulement PK = 17. Je persiste à XML. Mes pensées initiales sont d'ajouter un champ caché, puis d'utiliser une forme de javascript pour le remplir lors de l'exécution. Je crois que j'ai besoin du champ supplémentaire pour m'assurer que le modelbiding puisse le ramasser pour peupler le XML.

Un grand merci à l'avance.

Répondre

1

Le contenu d'une liste déroulante peut être modifié par un utilisateur malveillant sur son navigateur, ce qui lui permet de stocker la valeur de la profession qui lui convient dans votre base de données. Ce ne serait pas souhaitable.

Vous souhaitez probablement effectuer une recherche côté serveur, lorsque le formulaire est publié. Le service de recherche prendrait un identifiant (17 dans ce cas) et vous renverrait une chaîne ('IT'). Ensuite, l'utilisateur ne peut pas jouer malicieusement avec la valeur.

+0

L'utilisateur peut toujours enregistrer le code HTML, le modifier et l'utiliser pour renvoyer la valeur modifiée au serveur. Ou ils n'ont même pas besoin de le sauvegarder, ils peuvent simplement utiliser firebug ou d'autres outils comme ça. Quoi qu'il en soit la recherche côté serveur est une solution possible. –

+0

Exactement. C'est pourquoi je recommande une recherche sur le côté serveur sur le retour. –

Questions connexes