J'ai essayé pendant des heures pour que ça marche, mais maintenant je dois demander.
Comme lu dans
/942262/add-empty-value-to-a-dropdownlist-in-asp-net-mvc et /3780614/mvc-clear-default-selected-value-of-selectlist
Je souhaite ajouter un espace vide aux listes déroulantes de mon application Web ASP.NET MVC Razor avec Entity Framework 5 pour forcer l'utilisateur à entrer.
J'ai suivi les informations, mais dans la vue, ce qui est arrivé est que: http://i.stack.imgur.com/EXSgT.png
Donc, comme vous le voyez, il y a un espace vide, mais il n’est pas sélectionné par défaut. Au lieu de cela, mon "testproject", en tant que première valeur de mon contrôleur, est marqué .. Pas l'espace vide. Alors, où ai-je échoué?
Merci beaucoup.
Mon modèle ressemble à cela:
[...]
using System.Web.Mvc;
public class UploadTranferContainer
{
[DisplayName("Project")]
public int ProjectID { get; set; }
public SelectList Projects { get; set; }
}
Mon controller remplit les données comme:
UploadTranferContainer container = new UploadTranferContainer();
container.Projects = new SelectList(db.Projects.AsEnumerable(), "ProjectID", "ProjectName");
Et le view décompresse mon conteneur comme suit:
<div class="editor-label metadataLabel">
@Html.LabelFor(x => x.ProjectID)
</div>
<div class="editor-field">
@Html.DropDownListFor(x => x.ProjectID, Model.Projects, string.Empty)
</div>
La valeur sélectionnée du menu déroulant sera la valeur (si trouvée) de Model.ProjectID
Si vous souhaitez que cela apparaisse comme la première option (vide) de la sélection, assurez-vous que la valeur de ProjectID
ne figure pas dans les éléments de la liste de sélection Model.Projects
vous pouvez utiliser l'approche ci-dessous pour le menu déroulant avec des valeurs vides
@Html.DropDownListFor(x => x.ProjectID, new SelectList(Model.Projects, "ProjectID", "ProjectName"), " ")
Permet de créer un élément de liste vide
var area = new[] { new tbl_Area { AreaID = -1, AreaName = "Please Select Main Area" } };
ou
ViewBag.SubAreaList = new[] { new tbl_Area { AreaID = -1, AreaName = "Please Select Main Area" } };
rasoir
@Html.DropDownList("DdlSubAreas", new SelectList(ViewBag.SubAreaList, "AreaID", "AreaName"), new { size = "10" });
tbl_Area peut être une classe ou un modèle de données
class tbl_Area{
public int AreaID {get;set;}
public string AreaName {get;set;}
}