J'ai remarqué ce qui me semble un bug dans asp.net MVC ou tout simplement je fais quelque chose de mal. J'utilise actuellement la version 1.0, c'est peut-être quelque chose qui sera traité dans la version 2.0. Mais de toute façon, nous y voilà. Lorsque j'ai mon modèle de vue a une propriété qui est le même nom que l'identificateur déclaré pour une liste déroulante, l'élément sélectionné est ignoré et le html rendu n'a rien sélectionné. Je ne sais pas si j'ai fait quelque chose de mal, mais la modification du nom de l'ID corrige le problème. J'ai simplifié l'exemple, j'espère que c'est clair, sinon s'il vous plaît faites le moi savoir.DropDownList paramètre élément sélectionné dans asp.net MVC
Voici mon avis où l'ID déclaré est le même nom que ma liste dans le modèle:
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<%= Html.DropDownList("IsMultipleServicers", Model.IsMultipleServicers) %>
</td>
</tr>
</table>
Et le rendu Html
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<select id="IsMultipleServicers" name="IsMultipleServicers">
<option value="false">No</option>
<option value="true">Yes</option>
</select>
</td>
</tr>
</table>
permet maintenant faire petite monnaie. Je vais changer l'identifiant déclaré pour être quelque chose de différent.
Voici mon avis:
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<%= Html.DropDownList("MultipleServicers", Model.IsMultipleServicers) %>
</td>
</tr>
</table>
Et maintenant le code html rendu:
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<select id="IsMultipleServicers" name="IsMultipleServicers">
<option value="false">No</option>
<option selected="selected" value="true">Yes</option>
</select>
</td>
</tr>
</table>
Notez que maintenant je reçois une option choisie qui serait le deuxième élément de la liste.
Voici mon ViewModel juste pour lier le tout:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MVCProject.Models.ViewModels.Service
{
public class ServiceViewModel : ViewModel
{
public List<SelectListItem> IsMultipleServicers { get; set; }
}
}
Voici mon action:
[AcceptVerbs(HttpVerbs.Get)]
public virtual ActionResult Service()
{
return View(new ServiceViewModel()
{
IsMultipleServicers = BuildBooleanSelectList(true)
};
}
private List<SelectListItem> BuildBooleanSelectList(bool isTrue)
{
List<SelectListItem> list = new List<SelectListItem>();
if (isTrue)
{
list.Add(new SelectListItem() { Selected = false, Text = "No", Value = "false" });
list.Add(new SelectListItem() { Selected = true, Text = "Yes", Value = "true" });
}
else
{
list.Add(new SelectListItem() { Selected = true, Text = "No", Value = "false" });
list.Add(new SelectListItem() { Selected = false, Text = "Yes", Value = "true" });
}
return list;
}
J'aimerais que ce soit plus évident ... Mais c'est logique maintenant. Merci – ppumkin
je vous recommande tout celui-ci: http://www.c-sharpcorner.com/UploadFile/4d9083/creating-simple-cascading-dropdownlist-in-mvc-4-using-razor/ – Umitk