Je veux montrer les valeurs stockées dans la liste déroulante comme une valeur sélectionnée. Je ne sais pas comment faire cela dans MVC.
Mon code est
<%: Html.DropDownList("basic-qualification-container" + i.ToString(),
new SelectList((IEnumerable<Dial4Jobz.Models.Degree>)ViewData["CandidateBasicQualifications"], "Id", "Name", (IEnumerable<int>)ViewData["BasicQualificationDegrees"]),
new { @class = "qualification" })%>
Je sélectionne une option du menu déroulant et le soumets. Après avoir chargé la page, la dernière valeur stockée s’affiche. C'est mon problème.
Réponses:
0 pour la réponse № 1DropDownList Helper dans la vue SomeAction
Html.DropDownList(
string name,
IEnumerable<SelectListItem> selectList,
ViewData["lastSelected"], // String Selected Option
object htmlAttributes)
Vous pouvez afficher la valeur sélectionnée avec viewData comme ci-dessous.
Manette
// Set Default selected
public ActionResult SomeAction()
{
ViewData["lastSelected"] = "Default Text";
return View();
}
Et après la publication, vous devez redéfinir viewData qui apparaît dans la valeur sélectionnée.
// Set selected value after posting
[HttpPost]
public ActionResult SomeAction()
{
.....
ViewData["lastSelected"] = "Changed Text (selected value)";
return View();
}
1 pour la réponse № 2
Vous envoyez probablement une valeur incorrecte pour le paramètre selectedValue. Vous devez définir la valeur dans le constructeur SelectList.
<%: Html.DropDownList("basic-qualification-container" + i.ToString(),
new SelectList((IEnumerable<Dial4Jobz.Models.Degree>)ViewData["CandidateBasicQualifications"],
"Id",
"Name",
ViewData["selectedValue"]), //set selected value here
new { @class = "qualification" })%>
Une meilleure façon de faire consiste à mettre toutes les données de ViewData dans un modèle et à les taper fortement dans votre vue.
Voici comment vous définiriez votre modèle:
public class SampleModel
{
private string SelectedOption { get; set; }
private IEnumerable<SelectListItem> Options { get; set; }
}
Indiquez ensuite les valeurs dans votre méthode d'action:
public ActionResult Index()
{
//get data from db
SampleModel model = new SampleModel
{
SelectedOption = selectedOption,
Options = new SelectList(options, "Id", "Name")
};
return View(model);
}
Après avoir fortement saisi l'écran SampleModel, vous pouvez utiliser l'assistant Html.DropDownListFor dans votre vue.
<%: Html.DropDownListFor(model => model.SelectedOption,
Model.Options,
new { @class = "qualification" }) %>