Comment puis-je définir la valeur sélectionnée d'un Html.DropDownListFor? J'ai regardé en ligne et j'ai vu que cela pouvait être réalisé en utilisant le quatrième paramètre, comme ci-dessous:
@Html.DropDownListFor(m => m, new SelectList(Model, "Code", "Name", 0), "Please select a country")
Ma liste de sélection s'affiche alors comme ceci:
<select id="ShipFromCountries" name="ShipFromCountries">
<option value="">Please select a country</option>
<option value="GB">United Kingdom</option>
<option value="US">United States</option>
...
</select>
Mais pour une raison quelconque, le Royaume-Uni reste sélectionné mais je souhaite que "Veuillez sélectionner un pays" soit sélectionné.
Quelqu'un sait comment je peux y parvenir?
ÉDITER
J'ai mis à jour mon code car il y a eu un léger changement de fonctionnalité, mais semble toujours rencontrer ce problème. Voici ce que je pense:
@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
1
est l'Id du option
que je veux sélectionné, j'ai aussi essayé avec le texte du option
mais cela ne fonctionne pas non plus.
Des idées?
la source
OrderTemplates
votre tentative de liaison à uneViewBag
propriété qui est typeofIEnumerabe<SelectListItem>
. Mais un<select>
élément ne peut pas se lier à une collection d'objets complexes (uniquement un type valeur)Pour moi, cela ne fonctionnait pas, donc cela fonctionnait de cette façon:
Manette:
Vue:
JQuery:
la source
Lorsque vous passez un objet comme celui-ci:
vous dites: la source (
Model
) et la clé ("Code"
) le texte ("Name"
) et la valeur sélectionnée0
. Vous n'avez probablement pas de0
valeur dans votre source pour laCode
propriété, donc le HTML Helper sélectionnera le premier élément pour transmettre la valeur réelle selectedValue à ce contrôle.la source
Assurez-vous que vous avez coupé la valeur sélectionnée avant d'affecter.
//Modèle
//Manette
//Vue
la source
Si vous savez ce qui sera dans la vue, vous pouvez également définir la valeur par défaut à partir de Controller plutôt que de la configurer dans le fichier view / cshtml. Pas besoin de définir la valeur par défaut du côté HTML.
Dans le fichier Controller.
Dans le fichier .cshtml.
la source
Tu devrais oublier la classe
Utilisez ceci dans votre contrôleur:
Sélectionnez la valeur:
Ajoutez la liste à ViewData:
Utilisez ceci dans votre vue:
-
Plus d'informations sur: http://www.asp.net/mvc/overview/older-versions/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc
la source
Ajouter la section contrôleur
Ajouter la section Html
Une méthode simple
la source
Pour moi, solution générale :)
la source
Linq to Dropdown avec élément vide, élément sélectionné (fonctionne à 100%)
(Fortement typé, risque d'erreur minimum) Tout changement de modèle sera reflété dans la liaison
Manette
Vue
Cette méthode de liaison de données est également possible
la source
Je sais que ce n'est pas vraiment une réponse à la question, mais je cherchais un moyen d'initialiser la DropDownList à partir d'une liste à la volée dans la vue lorsque je n'arrêtais pas de tomber sur ce message.
Mon erreur est que j'ai essayé de créer une SelectList à partir d'un dictionnaire comme ceci:
J'ai ensuite fouillé dans la documentation officielle de msdn , et j'ai trouvé que
DropDownListFor
cela ne nécessite pas nécessairement unSelectList
, mais plutôt unIEnumerable<SelectListItem>
:Dans mon cas, je peux probablement aussi omettre l'
Model.Locality
élément sélectionné, car c'est a) le seul élément et b) il le dit déjà dans laSelectListItem.Selected
propriété.Juste au cas où vous vous poseriez la question, la source de données est une page AJAX, qui est chargée dynamiquement à l'aide du contrôle SelectWoo / Select2.
la source
Vous devez en obtenir un et en définir un différent. La valeur sélectionnée ne peut pas être le même élément que celui que vous êtes sur le point de définir.
J'utilise le dictionnaire Enum pour ma liste, c'est pourquoi il existe une paire «clé», «valeur».
la source
J'ai eu un problème similaire, j'utilisais le nom ViewBag et Element comme étant le même. (Erreur de frappe)
la source
Ce sont des problèmes de CSS. Je ne sais pas pourquoi @ Html.DropDownListFor dans Bootstrap 4 fonctionne. C'est sûrement un problème de conception de classe. Quoi qu'il en soit, le travail autour est, si votre zone de saisie Dropdown a un remplissage CSS: #px, # px; élément puis désactivez-le. J'espère que cela fonctionnera.
la source