2017-01-12 1 views
0

J'ai donc deux cas qui fonctionnent indépendamment.Avoir des problèmes avec un espace réservé fourni par le modèle pour la liste déroulante

Si je sais que j'ai des données de modèle dans la liste déroulante, j'utilise ce code.

 @Html.DropDownListFor(model => model.CarID, (SelectList)ViewBag.Cars, htmlAttributes: new { @class = "form-control" }) 

Cependant, le problème avec cela, si CarID est null le premier élément de la liste sera la pré sélectionnée dans le menu déroulant.

Et sous une autre forme, j'utiliser celui-ci:

@Html.DropDownListFor(model => model.CarID, "--Select a Car--", (SelectList)ViewBag.Cars, htmlAttributes: new { @class = "form-control" }) 

Mon contrôleur a ceci à fournir les données de vue:

ViewBag.Cars = new SelectList(db.Units, "CarID", "Name", model.CarID); 

est-il un de ceux-ci que je peux utiliser où il va avoir un espace réservé UNIQUEMENT si les données du modèle ne sont pas présentes pour remplir le spot?

Répondre

1

Dans votre deuxième approche, vous utilisez la méthode d'assistance de manière incorrecte,

Il devrait être

@Html.DropDownListFor(model => model.CarID,(SelectList)ViewBag.Cars, 
              "Select one", new { @class = "form-control" }) 

Cela rendra le menu déroulant avec un « Sélectionnez une option » comme le premier (et élément par défaut), si rien n'est pré-sélectionné (model.CarID est null). Si Model.CarID a une valeur valide, il sélectionnera l'option correspondante. Si vous voulez absolument supprimer le "Select" quand Model.CarID n'est pas nul, vous pouvez écrire du javascript qui s'exécute sur le chargement du document (document jQuery prêt :)) pour vérifier l'option sélectionnée et la supprimer si nécessaire.

+0

Ohhhhhh gotcha! Merci. Je l'ai utilisé comme ça pendant longtemps ... je n'ai jamais su! –

+0

Eh bien, en fait, j'ai toujours un problème avec cela ne s'affiche pas. Avec mon ene seleectList cela fonctionne bien, mais avec celui-ci ça ne marche pas. –

+0

Qu'est-ce qui ne s'affiche pas? – Shyju