2015-11-26 1 views
1

Comment puis-je définir la propriété selectedvalue d'une SelectList après qu'elle ait été instanciée sans une valeur sélectionnée.MVC - Définir la valeur sélectionnée de SelectList dans ViewModel

Contrôleur

var _walkInnVM = new WalkInnVM 
{   
    ProspectHandledEmpList = new SelectList(_db.Employees 
     .AsEnumerable() 
     .Where(e => e.Id == Int32.Parse(Session["LoggedUserId"].ToString())) 
     .ToList(), "Id", "Name")  
}; 

HTML

@Html.DropDownListFor(m => m.ProspectHandledEmpID, 
    Model.ProspectHandledEmpList, "", 
    new { @class = "form-control select2 ", @id = "ddlProspectHandled" }) 
+0

Voulez-vous définir une valeur par défaut pour la liste de sélection? – Vini

+2

Réglez simplement la valeur de 'ProspectHandledEmpID' - c'est ainsi que fonctionne la liaison de modèle. Et définir la propriété 'Selected' est inutile de toute façon car il serait ignoré. Notez également que vous n'avez pas besoin de '.ToList()' - c'est juste un surcoût inutile. –

+0

@StephenMuecke Un petit exemple sera utile .. – ksg

Répondre

1

Vous devez définir la valeur de ProspectHandledEmpID dans le modèle avant de passer à la vue

var _walkInnVM = new WalkInnVM 
{ 
    ProspectHandledEmpID = someValue, // add this 
    ProspectHandledEmpList = new SelectList(_db.Employees.AsEnumerable() 
     .Where(e => e.Id == Int32.Parse(Session["LoggedUserId"].ToString())), "Id", "Name")  
}; 

Si db.Employees contient des éléments avec Id valeurs de 1 à 10 et vous définissez la valeur ProspectHandledEmpID = 3, puis la 3ème option sera sélectionnée lors de la première génération de la vue.

+0

Si possible, veuillez regarder [cette question] (http://stackoverflow.com/questions/34081348/loading-remote-data -in-select2) – ksg