82

Is there a way to include a default empty option (or with text) if there is no selected value for a dropdownlist?

4 Answers 4

132

The below will prepend string.Empty to the SelectList (or IEnumerable) specified in the ViewData["Menu"] item. The select will have id and name MenuID.

<%= Html.DropDownList( "MenuID",
                      (IEnumerable<SelectListItem>)ViewData["Menu"],
                      string.Empty ) %>

Documentation: DropDownList method

Sign up to request clarification or add additional context in comments.

4 Comments

Thanks. The parameter name of optionLabel for the default option threw me off :)
Geez... me too I was starting to write my own helper method... rubbish name IMHO - sounds like it would output a <label> tag next to it.
Be aware that the ViewData-key must be different from the DropDown-Id (in this example "Menu" != "MenuID"). Else the framework overwrites the dropdown, ignoring the third parameter.
Awesome! Fixed my problem with select2.js too.
9

For Example:

    Controller :

    private void InitScreenInfoCollate()
    {   
        IEnumerable<MstBrd> listbrd = ibrandRepository.GetItemsByUsercode("");
        ViewBag.Brands = new SelectList(listbrd, "brd_cod", "brd_mei", null);

    }

    View :
    @Html.DropDownList("Brands", null, string.Empty, new { @class = "form-control"})

Result :

inline image

Comments

1

This easy solution worked for my mvc5 project:

in view:

@{
     Model.ModelItemsList.Add(new ModelItem{ });
     SelectList modelItemSelectList = new SelectList(Model.ModelItemsList, "ModelItemID", "ModelItemName");
}

Just add a new item to the List<> you want to display in your view. In my case, I added a empty "ModelItem" to my List<ModelItem> ModelItemList. Since my ModelItemID is a Guid, I had to check for Guid.Empty in my controller method and do some code. Thats all.

Comments

-8

The solution presented here worked very well for me: http://forums.asp.net/t/1142484.aspx/1

The basic idea is that you set the AppendDataBoundItems property of your DropDownList to true and then put an asp:ListItem in the DropDownList and that will become your default item with all the databound items coming after it.

1 Comment

-1 This is for ASP.NET Web Forms, not MVC.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.