Réglage de la valeur sélectionnée par défaut de SelectList dans un modèle d'éditeur
-
11-10-2019 - |
Question
J'ai ce code pour définir la valeur par défaut de ma liste de sélection:
public ActionResult Register()
{
IList<Country> countryList = _countryRepository.GetAllCountry();
var registerViewModel = new RegisterViewModel
{
CountryId = 52,
CountryList = new SelectList(countryList, "CountryId", "CountryName", "Select Country")
};
return View(registerViewModel);
}
J'ai sur mon point de vue et cela fonctionne bien définit la valeur de pays sélectionné à 52:
<%: Html.DropDownListFor(model => model.CountryId, Model.CountryList ,"Select Country") %>
Cependant, quand je crée un modèle d'éditeur pour cela, la valeur par défaut pour le pays n'est pas sélectionné
Alors, je change mon avis actuel à ceci:
<%: Html.EditorFor(model => model.CountryId,new { countries = Model.CountryList}) %>
Alors je crée mon modèle d'éditeur comme ceci:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.Int64?>" %>
<%= Html.DropDownList(
String.Empty /* */,
(SelectList)ViewData["countries"],
"Select Country"
)
%>
La solution
J'ai résolu ce problème en remplaçant le code dans mon contrôleur:
CountryList = new SelectList(countryList, "CountryId", "CountryName",52 /*Default Country Id*/)
Si vous avez de meilleures solutions, s'il vous plaît laissez-moi savoir. Je changerai réponse acceptée.
Autres conseils
Ajouter à votre contrôleur:
ViewData["CountryList"] = new SelectList(_countryRepository.GetAllCountry(), 52);
Ensuite, sur la page de vue, appelez le menu déroulant comme suit:
@Html.DropDownList("Countries", ViewData["CountryList"] as SelectList)
Différentes façons d'archiver ce, c'est une façon
Étape 1: Définissez la valeur que vous nee être sélectionné par défaut. ici, je l'ai passé 0 ou 2
ViewBag.AssessmentfrezeId = IsUserHavefreeAssessment == false ? 2 : 0;
Étape 2:. Aller à la Cshtml ajouté la valeur sélectionnée comme ci-dessous
@Html.DropDownListFor(m => m.TestID, new SelectList(Model.Slots, "Id", "TimeSlot", @ViewBag.AssessmentfrezeId), "--Select--", new { @class = "form-control" })