web-dev-qa-db-fra.com

ASP.NET MVC Razor: Ajouter une valeur vide à une DropDownList

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>            
8
Mexx_

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

4
Jay

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"), " ")
3
Rajshee IFour

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;}
}
0
Arun Prasad E S