Serving Industries Worldwide

Innovative Ways - Satisfied Clientele

Different ways of Binding Razor DropDownList in ASP.NET MVC 5


Listening is fun too.

Straighten your back and cherish with coffee - PLAY !

 
 

Different_ways_of_Binding_Razor_DropDownList_in_ASP.NET_MVC5

Table of Content

DropDownList

A dropdown menu is a method to show a huge list of options since only one choice is displayed initially until someone activates the dropdown box.

DropDownList1

Figure 1: DropDownList
 

What is Razor View in MVC?

Razor View is a markup syntax that lets us embed server-based code into web apps using C#. It is not a programming language, just a server-side markup language.

Razor has no specific relations to ASP.NET MVC because it is a general-purpose template engine. We can use it anywhere for HTML like output generation. It is just used in MVC to produce an HTML-like view from web apps.

Razor

Figure 2: Razo
 

We can have a template file that is a mixture of some literal text with some code snippets. We combine that template with some data or specific model where the data is meant to appear and then we execute the template to generate our output.

It is similar to ASPX files. ASPX files otherwise called templates have literal text with a bit of C# code and these together help to display specific frame or content to the user.


<% foreach=""><tr><td></td><td>
         <%: html.actionlink=""> |
         <%: html.actionlink="">|
         <%: html.actionlink="">
      </%:></%:></%:></td><td></td><td>
         <%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink="">
      </%:></%:></%:></%:></td><td></td><td>
         <%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink="">
      </%:></%:></%:></%:></%:></td><td></td></tr><%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink="">
<%}%>

@foreach (var item in Model) {<tr><td></td><td>
         @Html.ActionLink(&quot;Edit&quot;, &quot;Edit&quot;, new { id = item.ID }) |
         @Html.ActionLink(&quot;Details&quot;, &quot;Details&quot;, new { id = item.ID }) |
         @Html.ActionLink(&quot;Delete&quot;, &quot;Delete&quot;, new { id = item.ID })</td><td></td><td>
         @item.Name</td><td></td><td>
         @String.Format(&quot;{0,g}&quot;, item.JoiningDate)</td><td></td></tr>
} 
</%}%></%:></%:></%:></%:></%:></%>
   

How do I bind a DropDownList in MVC Razor?

To populate the DropDownList in MVC using Razor, we can use multiple ways like ViewBag, ViewData, Tempdata, jQuery, Model, Database, AJAX, and Hardcoding in View.

DropdownList using Hardcoded data in view


 Populating With Hardcoded Data

@Html.DropDownList("MySkills", new List<% foreach=""><%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink=""><%}%>
{
   new SelectListItem{ Text="ASP.NET MVC", Value = "1" },
   new SelectListItem{ Text="ASP.NET WEB API", Value = "2" },
   new SelectListItem{ Text="ENTITY FRAMEWORK", Value = "3" },
   new SelectListItem{ Text="DOCUSIGN", Value = "4" },
   new SelectListItem{ Text="ORCHARD CMS", Value = "5" },
   new SelectListItem{ Text="JQUERY", Value = "6" },
   new SelectListItem{ Text="ZENDESK", Value = "7" },
   new SelectListItem{ Text="LINQ", Value = "8" },
   new SelectListItem{ Text="C#", Value = "9" },
   new SelectListItem{ Text="GOOGLE ANALYTICS", Value = "10" },
})


DropdownList using Viewbag

public ActionResult Index() {
    #region ViewBag
    List < SelectListItem > mySkills = new List < SelectListItem > () {
        new SelectListItem {
            Text = "ASP.NET MVC", Value = "1"
        },
        new SelectListItem {
            Text = "ASP.NET WEB API", Value = "2"
        },
        new SelectListItem {
            Text = "ENTITY FRAMEWORK", Value = "3"
        },
        new SelectListItem {
            Text = "DOCUSIGN", Value = "4"
        },
        new SelectListItem {
            Text = "ORCHARD CMS", Value = "5"
        },
        new SelectListItem {
            Text = "JQUERY", Value = "6"
        },
        new SelectListItem {
            Text = "ZENDESK", Value = "7"
        },
        new SelectListItem {
            Text = "LINQ", Value = "8"
        },
        new SelectListItem {
            Text = "C#", Value = "9"
        },
        new SelectListItem {
            Text = "GOOGLE ANALYTICS", Value = "10"
        },
    };
    ViewBag.MySkills = mySkills;
    #endregion
    return View();
}



     Populating With ViewBag Data 
     @Html.DropDownList("MySkills", (IEnumerable
        <% foreach=""><%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink=""><%}%>)ViewBag.MySkills) 

DropdownListusing ViewData

public ActionResult Index() {
    #region ViewData
    List < SelectListItem > mySkills = new List < SelectListItem > () {
        new SelectListItem {
            Text = "ASP.NET MVC", Value = "1"
        },
        new SelectListItem {
            Text = "ASP.NET WEB API", Value = "2"
        },
        new SelectListItem {
            Text = "ENTITY FRAMEWORK", Value = "3"
        },
        new SelectListItem {
            Text = "DOCUSIGN", Value = "4"
        },
        new SelectListItem {
            Text = "ORCHARD CMS", Value = "5"
        },
        new SelectListItem {
            Text = "JQUERY", Value = "6"
        },
        new SelectListItem {
            Text = "ZENDESK", Value = "7"
        },
        new SelectListItem {
            Text = "LINQ", Value = "8"
        },
        new SelectListItem {
            Text = "C#", Value = "9"
        },
        new SelectListItem {
            Text = "GOOGLE ANALYTICS", Value = "10"
        },
    };
    ViewData["MySkills"] = mySkills;
    #endregion
}


     Populating With ViewData Data 
     @Html.DropDownList("MySkills", (IEnumerable
        <% foreach=""><%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink=""><%}%>)ViewData["MySkills"]) 

DropdownList using TempData

#region TempData
List < SelectListItem > mySkills = new List < SelectListItem > () {
    new SelectListItem {
        Text = "ASP.NET MVC", Value = "1"
    },
    new SelectListItem {
        Text = "ASP.NET WEB API", Value = "2"
    },
    new SelectListItem {
        Text = "ENTITY FRAMEWORK", Value = "3"
    },
    new SelectListItem {
        Text = "DOCUSIGN", Value = "4"
    },
    new SelectListItem {
        Text = "ORCHARD CMS", Value = "5"
    },
    new SelectListItem {
        Text = "JQUERY", Value = "6"
    },
    new SelectListItem {
        Text = "ZENDESK", Value = "7"
    },
    new SelectListItem {
        Text = "LINQ", Value = "8"
    },
    new SelectListItem {
        Text = "C#", Value = "9"
    },
    new SelectListItem {
        Text = "GOOGLE ANALYTICS", Value = "10"
    },
};
TempData["MySkills"] = mySkills;
#endregion


     Populating With TempData Data 
     @Html.DropDownList("MySkills", (IEnumerable
        <% foreach=""><%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink=""><%}%>)TempData["MySkills"]) 

 

Searching for Reliable .Net Development Company ?

Your Search ends here.

 

DropdownList using Enum

public enum MySkills {
    ASPNETMVC,
    ASPNETWEPAPI,
    CSHARP,
    DOCUSIGN,
    JQUERY
}

public struct ConvertEnum {
    public int Value {
        get;
        set;
    }
    public String Text {
        get;
        set;
    }
}

var myskill = new List < ConvertEnum > ();
foreach(MySkills lang in Enum.GetValues(typeof(MySkills)))
myskill.Add(new ConvertEnum {
    Value = (int) lang, Text = lang.ToString()
});
ViewBag.MySkillEnum = myskill;


     Populating From Enum 
     @Html.DropDownList("MySkills", new SelectList(ViewBag.MySkillEnum, "Value", "Text")) 

DropdownList using Database with Entity Framework

using(CSharpCornerEntities cshparpEntity = new CSharpCornerEntities()) {
    var fromDatabaseEF = new SelectList(cshparpEntity.MySkills.ToList(), "ID", "Name");
    ViewData["DBMySkills"] = fromDatabaseEF;
}


     Populating With Database and EF 
     @Html.DropDownList("MySkills", (IEnumerable
        <% foreach=""><%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink=""><%}%>)ViewData["DBMySkills"]) 

DropdownList using Jquery Ajax with JSON Data

public JsonResult ReturnJSONDataToAJax() //It will be fired from Jquery ajax call
{
    CSharpCornerEntities cshparpEntity = new CSharpCornerEntities();
    var jsonData = cshparpEntity.MySkills.ToList();
    return Json(jsonData, JsonRequestBehavior.AllowGet);
}





     Populating With Json Data 
     @Html.DropDownList("FromJson", new SelectList(Enumerable.Empty
        <% foreach=""><%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink=""><%}%>())) 

DropdownList using Model

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace VariousWayBindingDropDownListInMVC5.Models {
    public class MySkills {
        public int ID {
            get;
            set;
        }
        public string Name {
            get;
            set;
        }
        public IEnumerable < SelectListItem > Skills {
            get;
            set;
        }
    }
}

var model = new VariousWayBindingDropDownListInMVC5.Models.MySkills();
using(CSharpCornerEntities cshparpEntity = new CSharpCornerEntities()) {
    var dbData = cshparpEntity.MySkills.ToList();
    model.Skills = GetSelectListItems(dbData);
}

private IEnumerable < SelectListItem > GetSelectListItems(IEnumerable < MySkill > elements) {
    var selectList = new List < SelectListItem > ();
    foreach(var element in elements) {
        selectList.Add(new SelectListItem {
            Value = element.ID.ToString(),
                Text = element.Name
        });
    }
    return selectList;
}

@model VariousWayBindingDropDownListInMVC5.Models.MySkills

     Populating With Model Data 
     @Html.DropDownList("FromModel", Model.Skills) 

DropdownList using Global Static Data in View

@ {
    List < SelectListItem > listItems = new List < SelectListItem > ();
    listItems.Add(new SelectListItem {
        Text = "ASP.NET MVC",
            Value = "1"
    });
    listItems.Add(new SelectListItem {
        Text = "ASP.NET WEB API",
            Value = "2",
            Selected = true
    });
    listItems.Add(new SelectListItem {
        Text = "DOCUSIGN",
            Value = "3"
    });
    listItems.Add(new SelectListItem {
        Text = "C#",
            Value = "4"
    });
} < tr > < td > Populating With Global static Data < /td> < td > @Html.DropDownList("StaticData", listItems) < /td> < /tr>

output200

Figure 3: Output

Conclusion

In this article, we discussed DropDownList and Razor View basics. We also discussed different ways to implement the DropDownList using Razor. Many of them get stuck with binding dropdown elements using MVC. As it is an important concept, this blog will help them resolve their concerns of dropdown list binding.

Different ways of Binding Razor DropDownList in ASP.NET MVC 5

Different_ways_of_Binding_Razor_DropDownList_in_ASP.NET_MVC5

Table of Content

DropDownList

A dropdown menu is a method to show a huge list of options since only one choice is displayed initially until someone activates the dropdown box.

DropDownList1

Figure 1: DropDownList
 

What is Razor View in MVC?

Razor View is a markup syntax that lets us embed server-based code into web apps using C#. It is not a programming language, just a server-side markup language.

Razor has no specific relations to ASP.NET MVC because it is a general-purpose template engine. We can use it anywhere for HTML like output generation. It is just used in MVC to produce an HTML-like view from web apps.

Razor

Figure 2: Razo
 

We can have a template file that is a mixture of some literal text with some code snippets. We combine that template with some data or specific model where the data is meant to appear and then we execute the template to generate our output.

It is similar to ASPX files. ASPX files otherwise called templates have literal text with a bit of C# code and these together help to display specific frame or content to the user.


<% foreach=""><tr><td></td><td>
         <%: html.actionlink=""> |
         <%: html.actionlink="">|
         <%: html.actionlink="">
      </%:></%:></%:></td><td></td><td>
         <%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink="">
      </%:></%:></%:></%:></td><td></td><td>
         <%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink="">
      </%:></%:></%:></%:></%:></td><td></td></tr><%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink="">
<%}%>

@foreach (var item in Model) {<tr><td></td><td>
         @Html.ActionLink(&quot;Edit&quot;, &quot;Edit&quot;, new { id = item.ID }) |
         @Html.ActionLink(&quot;Details&quot;, &quot;Details&quot;, new { id = item.ID }) |
         @Html.ActionLink(&quot;Delete&quot;, &quot;Delete&quot;, new { id = item.ID })</td><td></td><td>
         @item.Name</td><td></td><td>
         @String.Format(&quot;{0,g}&quot;, item.JoiningDate)</td><td></td></tr>
} 
</%}%></%:></%:></%:></%:></%:></%>
   

How do I bind a DropDownList in MVC Razor?

To populate the DropDownList in MVC using Razor, we can use multiple ways like ViewBag, ViewData, Tempdata, jQuery, Model, Database, AJAX, and Hardcoding in View.

DropdownList using Hardcoded data in view


 Populating With Hardcoded Data

@Html.DropDownList("MySkills", new List<% foreach=""><%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink=""><%}%>
{
   new SelectListItem{ Text="ASP.NET MVC", Value = "1" },
   new SelectListItem{ Text="ASP.NET WEB API", Value = "2" },
   new SelectListItem{ Text="ENTITY FRAMEWORK", Value = "3" },
   new SelectListItem{ Text="DOCUSIGN", Value = "4" },
   new SelectListItem{ Text="ORCHARD CMS", Value = "5" },
   new SelectListItem{ Text="JQUERY", Value = "6" },
   new SelectListItem{ Text="ZENDESK", Value = "7" },
   new SelectListItem{ Text="LINQ", Value = "8" },
   new SelectListItem{ Text="C#", Value = "9" },
   new SelectListItem{ Text="GOOGLE ANALYTICS", Value = "10" },
})


DropdownList using Viewbag

public ActionResult Index() {
    #region ViewBag
    List < SelectListItem > mySkills = new List < SelectListItem > () {
        new SelectListItem {
            Text = "ASP.NET MVC", Value = "1"
        },
        new SelectListItem {
            Text = "ASP.NET WEB API", Value = "2"
        },
        new SelectListItem {
            Text = "ENTITY FRAMEWORK", Value = "3"
        },
        new SelectListItem {
            Text = "DOCUSIGN", Value = "4"
        },
        new SelectListItem {
            Text = "ORCHARD CMS", Value = "5"
        },
        new SelectListItem {
            Text = "JQUERY", Value = "6"
        },
        new SelectListItem {
            Text = "ZENDESK", Value = "7"
        },
        new SelectListItem {
            Text = "LINQ", Value = "8"
        },
        new SelectListItem {
            Text = "C#", Value = "9"
        },
        new SelectListItem {
            Text = "GOOGLE ANALYTICS", Value = "10"
        },
    };
    ViewBag.MySkills = mySkills;
    #endregion
    return View();
}



     Populating With ViewBag Data 
     @Html.DropDownList("MySkills", (IEnumerable
        <% foreach=""><%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink=""><%}%>)ViewBag.MySkills) 

DropdownListusing ViewData

public ActionResult Index() {
    #region ViewData
    List < SelectListItem > mySkills = new List < SelectListItem > () {
        new SelectListItem {
            Text = "ASP.NET MVC", Value = "1"
        },
        new SelectListItem {
            Text = "ASP.NET WEB API", Value = "2"
        },
        new SelectListItem {
            Text = "ENTITY FRAMEWORK", Value = "3"
        },
        new SelectListItem {
            Text = "DOCUSIGN", Value = "4"
        },
        new SelectListItem {
            Text = "ORCHARD CMS", Value = "5"
        },
        new SelectListItem {
            Text = "JQUERY", Value = "6"
        },
        new SelectListItem {
            Text = "ZENDESK", Value = "7"
        },
        new SelectListItem {
            Text = "LINQ", Value = "8"
        },
        new SelectListItem {
            Text = "C#", Value = "9"
        },
        new SelectListItem {
            Text = "GOOGLE ANALYTICS", Value = "10"
        },
    };
    ViewData["MySkills"] = mySkills;
    #endregion
}


     Populating With ViewData Data 
     @Html.DropDownList("MySkills", (IEnumerable
        <% foreach=""><%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink=""><%}%>)ViewData["MySkills"]) 

DropdownList using TempData

#region TempData
List < SelectListItem > mySkills = new List < SelectListItem > () {
    new SelectListItem {
        Text = "ASP.NET MVC", Value = "1"
    },
    new SelectListItem {
        Text = "ASP.NET WEB API", Value = "2"
    },
    new SelectListItem {
        Text = "ENTITY FRAMEWORK", Value = "3"
    },
    new SelectListItem {
        Text = "DOCUSIGN", Value = "4"
    },
    new SelectListItem {
        Text = "ORCHARD CMS", Value = "5"
    },
    new SelectListItem {
        Text = "JQUERY", Value = "6"
    },
    new SelectListItem {
        Text = "ZENDESK", Value = "7"
    },
    new SelectListItem {
        Text = "LINQ", Value = "8"
    },
    new SelectListItem {
        Text = "C#", Value = "9"
    },
    new SelectListItem {
        Text = "GOOGLE ANALYTICS", Value = "10"
    },
};
TempData["MySkills"] = mySkills;
#endregion


     Populating With TempData Data 
     @Html.DropDownList("MySkills", (IEnumerable
        <% foreach=""><%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink=""><%}%>)TempData["MySkills"]) 

 

Searching for Reliable .Net Development Company ?

Your Search ends here.

 

DropdownList using Enum

public enum MySkills {
    ASPNETMVC,
    ASPNETWEPAPI,
    CSHARP,
    DOCUSIGN,
    JQUERY
}

public struct ConvertEnum {
    public int Value {
        get;
        set;
    }
    public String Text {
        get;
        set;
    }
}

var myskill = new List < ConvertEnum > ();
foreach(MySkills lang in Enum.GetValues(typeof(MySkills)))
myskill.Add(new ConvertEnum {
    Value = (int) lang, Text = lang.ToString()
});
ViewBag.MySkillEnum = myskill;


     Populating From Enum 
     @Html.DropDownList("MySkills", new SelectList(ViewBag.MySkillEnum, "Value", "Text")) 

DropdownList using Database with Entity Framework

using(CSharpCornerEntities cshparpEntity = new CSharpCornerEntities()) {
    var fromDatabaseEF = new SelectList(cshparpEntity.MySkills.ToList(), "ID", "Name");
    ViewData["DBMySkills"] = fromDatabaseEF;
}


     Populating With Database and EF 
     @Html.DropDownList("MySkills", (IEnumerable
        <% foreach=""><%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink=""><%}%>)ViewData["DBMySkills"]) 

DropdownList using Jquery Ajax with JSON Data

public JsonResult ReturnJSONDataToAJax() //It will be fired from Jquery ajax call
{
    CSharpCornerEntities cshparpEntity = new CSharpCornerEntities();
    var jsonData = cshparpEntity.MySkills.ToList();
    return Json(jsonData, JsonRequestBehavior.AllowGet);
}





     Populating With Json Data 
     @Html.DropDownList("FromJson", new SelectList(Enumerable.Empty
        <% foreach=""><%: string.format=""><%: item.name=""><%: html.actionlink=""><%: html.actionlink=""><%: html.actionlink=""><%}%>())) 

DropdownList using Model

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace VariousWayBindingDropDownListInMVC5.Models {
    public class MySkills {
        public int ID {
            get;
            set;
        }
        public string Name {
            get;
            set;
        }
        public IEnumerable < SelectListItem > Skills {
            get;
            set;
        }
    }
}

var model = new VariousWayBindingDropDownListInMVC5.Models.MySkills();
using(CSharpCornerEntities cshparpEntity = new CSharpCornerEntities()) {
    var dbData = cshparpEntity.MySkills.ToList();
    model.Skills = GetSelectListItems(dbData);
}

private IEnumerable < SelectListItem > GetSelectListItems(IEnumerable < MySkill > elements) {
    var selectList = new List < SelectListItem > ();
    foreach(var element in elements) {
        selectList.Add(new SelectListItem {
            Value = element.ID.ToString(),
                Text = element.Name
        });
    }
    return selectList;
}

@model VariousWayBindingDropDownListInMVC5.Models.MySkills

     Populating With Model Data 
     @Html.DropDownList("FromModel", Model.Skills) 

DropdownList using Global Static Data in View

@ {
    List < SelectListItem > listItems = new List < SelectListItem > ();
    listItems.Add(new SelectListItem {
        Text = "ASP.NET MVC",
            Value = "1"
    });
    listItems.Add(new SelectListItem {
        Text = "ASP.NET WEB API",
            Value = "2",
            Selected = true
    });
    listItems.Add(new SelectListItem {
        Text = "DOCUSIGN",
            Value = "3"
    });
    listItems.Add(new SelectListItem {
        Text = "C#",
            Value = "4"
    });
} < tr > < td > Populating With Global static Data < /td> < td > @Html.DropDownList("StaticData", listItems) < /td> < /tr>

output200

Figure 3: Output

Conclusion

In this article, we discussed DropDownList and Razor View basics. We also discussed different ways to implement the DropDownList using Razor. Many of them get stuck with binding dropdown elements using MVC. As it is an important concept, this blog will help them resolve their concerns of dropdown list binding.

Author Bio

Author

Author Name: Ishan Sarvaiya

Ishan Sarvaiya is a .NET fanatic who takes a wide view of the whole process with his impeccable specialization. With a fine demonstration of the concepts, he keenly shares marvellous insights on various platforms.