Définition de la valeur d'un DropDownListFor basé sur une base de données dans MVC

asp.net-mvc c# dapper

Question

Il y a déjà un certain nombre de questions à ce sujet sur SO et j'en ai examiné quelques-unes, mais je n'arrive toujours pas à comprendre exactement ce que je fais mal ici. Je peux créer une liste déroulante pour remplir les valeurs sélectionnées sans problème, mais la valeur de la liste à partir de la base de données ne fonctionne pas.

Fondamentalement, la même liste de sélection est utilisée plusieurs fois sur la page et il existe une variable de modèle distincte qui suit la valeur de chaque instance. Voici un exemple de la variable hdr_base_uom:

Le modèle:

public string hdr_base_uom { get; set; }
public List<UomOption> putupOptions { get; set; }

public class UomOption
{
    public int uom_id { get; set; }
    public string uom_description { get; set; }
}

Remplir la liste:

public List<UomOption> GetPutupOptions()
{
    try
    {
        using (IfxConnection con = new IfxConnection(WebConfigurationManager.AppSettings["IBMCONN"].ToString()))
            {
                con.Open();
                List<UomOption> uomOptions= con.Query<UomOption>("select uom_id, initcap(uom_description) as uom_description " +
                    " from oe_unitom " +
                    " where uom_group = 1 order by uom_description").ToList();
                con.Close();
                uomOptions.Insert(0, new UomOption(){ uom_id = 0, uom_description = " "});
                return uomOptions;
            }
        }
        catch (Exception x)
        {
            throw x;
        }
    }

La vue:

@Html.DropDownListFor(model => model.hdr_base_uom, new SelectList(Model.putupOptions, 
    "uom_id", "uom_description", Model.hdr_base_uom), 
    new { disabled = "disabled", style = "width:13em" })

Si je montre simplement la valeur de model.hdr_base_uom sur la page, alors le uom_id qui est défini sur cette variable apparaît. Tenter d'utiliser cet ID pour définir la valeur de dropdownlistfor ne fait cependant rien. Par exemple, si uom_id est 58 que la description correspondante de "Roll" doit être affichée, au lieu de uom_id l' uom_id Roll par défaut, dropdownlistfor affiche à la place le premier élément de la liste (l'élément vide ajouté ci-dessus).

Des pensées sur ce que je fais mal ici?

Réponse populaire

Je ne suis pas sûr de ce que Model.hdr_base-uom signifie. Vous n'en avez pas besoin cependant:

@Html.DropDownListFor(model => model.hdr_base_uom, new SelectList(Model.putupOptions, 
    "uom_id", "uom_description"), 
    new { disabled = "disabled", style = "width:13em" })

Assurez-vous également que vous définissez "58" (ou quelle que soit la valeur sélectionnée, soit un mot "stringified") dans le champ hdr_base_uom .

Votre exemple fonctionne pour moi tel Model.hdr_base-uom (avec ou sans Model.hdr_base-uom ) (dans les navigateurs modernes, bien sûr).

Violon




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi