How to create Select List for Country and States/province in MVC

后端 未结 7 844
一生所求
一生所求 2020-12-05 10:19

Hi I am new to MVC and even asp..

I want to create a form in MVC. With the help of some examples I am able to create TextBoxes, but I now I don\'t understand how to

相关标签:
7条回答
  • 2020-12-05 10:43
    public static List<SelectListItem> States = new List<SelectListItem>()
        {
            new SelectListItem() {Text="Alabama", Value="AL"},
            new SelectListItem() { Text="Alaska", Value="AK"},
            new SelectListItem() { Text="Arizona", Value="AZ"},
            new SelectListItem() { Text="Arkansas", Value="AR"},
            new SelectListItem() { Text="California", Value="CA"},
            new SelectListItem() { Text="Colorado", Value="CO"},
            new SelectListItem() { Text="Connecticut", Value="CT"},
            new SelectListItem() { Text="District of Columbia", Value="DC"},
            new SelectListItem() { Text="Delaware", Value="DE"},
            new SelectListItem() { Text="Florida", Value="FL"},
            new SelectListItem() { Text="Georgia", Value="GA"},
            new SelectListItem() { Text="Hawaii", Value="HI"},
            new SelectListItem() { Text="Idaho", Value="ID"},
            new SelectListItem() { Text="Illinois", Value="IL"},
            new SelectListItem() { Text="Indiana", Value="IN"},
            new SelectListItem() { Text="Iowa", Value="IA"},
            new SelectListItem() { Text="Kansas", Value="KS"},
            new SelectListItem() { Text="Kentucky", Value="KY"},
            new SelectListItem() { Text="Louisiana", Value="LA"},
            new SelectListItem() { Text="Maine", Value="ME"},
            new SelectListItem() { Text="Maryland", Value="MD"},
            new SelectListItem() { Text="Massachusetts", Value="MA"},
            new SelectListItem() { Text="Michigan", Value="MI"},
            new SelectListItem() { Text="Minnesota", Value="MN"},
            new SelectListItem() { Text="Mississippi", Value="MS"},
            new SelectListItem() { Text="Missouri", Value="MO"},
            new SelectListItem() { Text="Montana", Value="MT"},
            new SelectListItem() { Text="Nebraska", Value="NE"},
            new SelectListItem() { Text="Nevada", Value="NV"},
            new SelectListItem() { Text="New Hampshire", Value="NH"},
            new SelectListItem() { Text="New Jersey", Value="NJ"},
            new SelectListItem() { Text="New Mexico", Value="NM"},
            new SelectListItem() { Text="New York", Value="NY"},
            new SelectListItem() { Text="North Carolina", Value="NC"},
            new SelectListItem() { Text="North Dakota", Value="ND"},
            new SelectListItem() { Text="Ohio", Value="OH"},
            new SelectListItem() { Text="Oklahoma", Value="OK"},
            new SelectListItem() { Text="Oregon", Value="OR"},
            new SelectListItem() { Text="Pennsylvania", Value="PA"},
            new SelectListItem() { Text="Rhode Island", Value="RI"},
            new SelectListItem() { Text="South Carolina", Value="SC"},
            new SelectListItem() { Text="South Dakota", Value="SD"},
            new SelectListItem() { Text="Tennessee", Value="TN"},
            new SelectListItem() { Text="Texas", Value="TX"},
            new SelectListItem() { Text="Utah", Value="UT"},
            new SelectListItem() { Text="Vermont", Value="VT"},
            new SelectListItem() { Text="Virginia", Value="VA"},
            new SelectListItem() { Text="Washington", Value="WA"},
            new SelectListItem() { Text="West Virginia", Value="WV"},
            new SelectListItem() { Text="Wisconsin", Value="WI"},
            new SelectListItem() { Text="Wyoming", Value="WY"}
        };
    

    How we do it is put this method into a class and then call the class from the view

    @Html.DropDownListFor(x => x.State, Class.States)
    
    0 讨论(0)
  • 2020-12-05 10:44

    I too liked Jordan's answer and implemented it myself. I only needed to abbreviations so in case someone else needs the same:

        public static IEnumerable<SelectListItem> GetStatesList()
        {
            IList<SelectListItem> states = new List<SelectListItem>
            {
                new SelectListItem() {Text="AL", Value="AL"},
                new SelectListItem() { Text="AK", Value="AK"},
                new SelectListItem() { Text="AZ", Value="AZ"},
                new SelectListItem() { Text="AR", Value="AR"},
                new SelectListItem() { Text="CA", Value="CA"},
                new SelectListItem() { Text="CO", Value="CO"},
                new SelectListItem() { Text="CT", Value="CT"},
                new SelectListItem() { Text="DC", Value="DC"},
                new SelectListItem() { Text="DE", Value="DE"},
                new SelectListItem() { Text="FL", Value="FL"},
                new SelectListItem() { Text="GA", Value="GA"},
                new SelectListItem() { Text="HI", Value="HI"},
                new SelectListItem() { Text="ID", Value="ID"},
                new SelectListItem() { Text="IL", Value="IL"},
                new SelectListItem() { Text="IN", Value="IN"},
                new SelectListItem() { Text="IA", Value="IA"},
                new SelectListItem() { Text="KS", Value="KS"},
                new SelectListItem() { Text="KY", Value="KY"},
                new SelectListItem() { Text="LA", Value="LA"},
                new SelectListItem() { Text="ME", Value="ME"},
                new SelectListItem() { Text="MD", Value="MD"},
                new SelectListItem() { Text="MA", Value="MA"},
                new SelectListItem() { Text="MI", Value="MI"},
                new SelectListItem() { Text="MN", Value="MN"},
                new SelectListItem() { Text="MS", Value="MS"},
                new SelectListItem() { Text="MO", Value="MO"},
                new SelectListItem() { Text="MT", Value="MT"},
                new SelectListItem() { Text="NE", Value="NE"},
                new SelectListItem() { Text="NV", Value="NV"},
                new SelectListItem() { Text="NH", Value="NH"},
                new SelectListItem() { Text="NJ", Value="NJ"},
                new SelectListItem() { Text="NM", Value="NM"},
                new SelectListItem() { Text="NY", Value="NY"},
                new SelectListItem() { Text="NC", Value="NC"},
                new SelectListItem() { Text="ND", Value="ND"},
                new SelectListItem() { Text="OH", Value="OH"},
                new SelectListItem() { Text="OK", Value="OK"},
                new SelectListItem() { Text="OR", Value="OR"},
                new SelectListItem() { Text="PA", Value="PA"},
                new SelectListItem() { Text="PR", Value="PR"},
                new SelectListItem() { Text="RI", Value="RI"},
                new SelectListItem() { Text="SC", Value="SC"},
                new SelectListItem() { Text="SD", Value="SD"},
                new SelectListItem() { Text="TN", Value="TN"},
                new SelectListItem() { Text="TX", Value="TX"},
                new SelectListItem() { Text="UT", Value="UT"},
                new SelectListItem() { Text="VT", Value="VT"},
                new SelectListItem() { Text="VA", Value="VA"},
                new SelectListItem() { Text="WA", Value="WA"},
                new SelectListItem() { Text="WV", Value="WV"},
                new SelectListItem() { Text="WI", Value="WI"},
                new SelectListItem() { Text="WY", Value="WY"}
            };
            return states;
        }
    
    0 讨论(0)
  • 2020-12-05 10:51

    Best way to make drop down list:

    grid.Column("PriceType",canSort:true,header: "PriceType",format: @<span>
        <span id="spanPriceType_@item.ShoppingCartID">@item.PriceTypeDescription</span>
        @Html.DropDownList("PriceType"+(int)item.ShoppingCartID,new SelectList(MvcApplication1.Services.ExigoApiContext.CreateODataContext().PriceTypes.Select(s => new { s.PriceTypeID, s.PriceTypeDescription }).AsEnumerable(),"PriceTypeID", "PriceTypeDescription",Convert.ToInt32(item.PriceTypeId)), new { @class = "PriceType",@style="width:120px;display:none",@selectedvalue="selected"})
            </span>),
    
    0 讨论(0)
  • 2020-12-05 10:53

    Thank you for this

    Here's what I did:

    1.Created an Extensions.cs file in a Utils folder.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace Web.ProjectName.Utils
    {
        public class Extensions
        {
            public static IEnumerable<SelectListItem> GetStatesList()
            {
                IList<SelectListItem> states = new List<SelectListItem>
                {
                    new SelectListItem() {Text="Alabama", Value="AL"},
                    new SelectListItem() { Text="Alaska", Value="AK"},
                    new SelectListItem() { Text="Arizona", Value="AZ"},
                    new SelectListItem() { Text="Arkansas", Value="AR"},
                    new SelectListItem() { Text="California", Value="CA"},
                    new SelectListItem() { Text="Colorado", Value="CO"},
                    new SelectListItem() { Text="Connecticut", Value="CT"},
                    new SelectListItem() { Text="District of Columbia", Value="DC"},
                    new SelectListItem() { Text="Delaware", Value="DE"},
                    new SelectListItem() { Text="Florida", Value="FL"},
                    new SelectListItem() { Text="Georgia", Value="GA"},
                    new SelectListItem() { Text="Hawaii", Value="HI"},
                    new SelectListItem() { Text="Idaho", Value="ID"},
                    new SelectListItem() { Text="Illinois", Value="IL"},
                    new SelectListItem() { Text="Indiana", Value="IN"},
                    new SelectListItem() { Text="Iowa", Value="IA"},
                    new SelectListItem() { Text="Kansas", Value="KS"},
                    new SelectListItem() { Text="Kentucky", Value="KY"},
                    new SelectListItem() { Text="Louisiana", Value="LA"},
                    new SelectListItem() { Text="Maine", Value="ME"},
                    new SelectListItem() { Text="Maryland", Value="MD"},
                    new SelectListItem() { Text="Massachusetts", Value="MA"},
                    new SelectListItem() { Text="Michigan", Value="MI"},
                    new SelectListItem() { Text="Minnesota", Value="MN"},
                    new SelectListItem() { Text="Mississippi", Value="MS"},
                    new SelectListItem() { Text="Missouri", Value="MO"},
                    new SelectListItem() { Text="Montana", Value="MT"},
                    new SelectListItem() { Text="Nebraska", Value="NE"},
                    new SelectListItem() { Text="Nevada", Value="NV"},
                    new SelectListItem() { Text="New Hampshire", Value="NH"},
                    new SelectListItem() { Text="New Jersey", Value="NJ"},
                    new SelectListItem() { Text="New Mexico", Value="NM"},
                    new SelectListItem() { Text="New York", Value="NY"},
                    new SelectListItem() { Text="North Carolina", Value="NC"},
                    new SelectListItem() { Text="North Dakota", Value="ND"},
                    new SelectListItem() { Text="Ohio", Value="OH"},
                    new SelectListItem() { Text="Oklahoma", Value="OK"},
                    new SelectListItem() { Text="Oregon", Value="OR"},
                    new SelectListItem() { Text="Pennsylvania", Value="PA"},
                    new SelectListItem() { Text="Rhode Island", Value="RI"},
                    new SelectListItem() { Text="South Carolina", Value="SC"},
                    new SelectListItem() { Text="South Dakota", Value="SD"},
                    new SelectListItem() { Text="Tennessee", Value="TN"},
                    new SelectListItem() { Text="Texas", Value="TX"},
                    new SelectListItem() { Text="Utah", Value="UT"},
                    new SelectListItem() { Text="Vermont", Value="VT"},
                    new SelectListItem() { Text="Virginia", Value="VA"},
                    new SelectListItem() { Text="Washington", Value="WA"},
                    new SelectListItem() { Text="West Virginia", Value="WV"},
                    new SelectListItem() { Text="Wisconsin", Value="WI"},
                    new SelectListItem() { Text="Wyoming", Value="WY"}
                };
                return states;
            }
        }
    }
    

    2.In my model, where state will be abbreviated (e.g. "AL", "NY", etc.):

    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    
    namespace Web.ProjectName.Models
    {
        public class ContactForm
        {
    
            ...
    
            [Required]
            [Display(Name = "State")]
            [RegularExpression("[A-Z]{2}")]
            public string State { get; set; }
    
            ...
    
        }
    }
    

    2.In my view I referenced it:

      @model Web.ProjectName.Models.ContactForm
    
      ...
    
      @Html.LabelFor(x => x.State, new { @class = "form-label" })
      @Html.DropDownListFor(x => x.State, Web.ProjectName.Utils.Extensions.GetStatesList(), new { @class = "form-control" })
    
      ...
    
    0 讨论(0)
  • 2020-12-05 10:54

    Designing You Model:

    Public class ModelName
    {
        ...// Properties
        public IEnumerable<SelectListItem> ListName { get; set; }
    }
    

    Prepare and bind List to Model in Controller :

        public ActionResult Index(ModelName model)
        {
            var items = // Your List of data
            model.ListName = items.Select(x=> new SelectListItem() {
                        Text = x.prop,
                        Value = x.prop2
                   });
        }
    

    In You View :

    @Html.DropDownListFor(m => Model.prop2,Model.ListName)
    
    0 讨论(0)
  • 2020-12-05 10:57

    Thank You All! I am able to to load Select List as per MVC now My Working Code is below:

    HTML+MVC Code in View:-

        <tr>
            <th>@Html.Label("Country")</th>
            <td>@Html.DropDownListFor(x =>x.Province,SelectListItemHelper.GetCountryList())<span class="required">*</span></td>
        </tr>
        <tr>
            <th>@Html.LabelFor(x=>x.Province)</th>
            <td>@Html.DropDownListFor(x =>x.Province,SelectListItemHelper.GetProvincesList())<span class="required">*</span></td>
        </tr>
    

    Created a Controller under "UTIL" folder: Code:-

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace MedAvail.Applications.MedProvision.Web.Util
    {
        public class SelectListItemHelper
        {
            public static IEnumerable<SelectListItem> GetProvincesList()
            {
                IList<SelectListItem> items = new List<SelectListItem>
                {
                    new SelectListItem{Text = "California", Value = "B"},
                    new SelectListItem{Text = "Alaska", Value = "B"},
                    new SelectListItem{Text = "Illinois", Value = "B"},
                    new SelectListItem{Text = "Texas", Value = "B"},
                    new SelectListItem{Text = "Washington", Value = "B"}
    
                };
                return items;
            }
    
    
            public static IEnumerable<SelectListItem> GetCountryList()
            {
                IList<SelectListItem> items = new List<SelectListItem>
                {
                    new SelectListItem{Text = "United States", Value = "B"},
                    new SelectListItem{Text = "Canada", Value = "B"},
                    new SelectListItem{Text = "United Kingdom", Value = "B"},
                    new SelectListItem{Text = "Texas", Value = "B"},
                    new SelectListItem{Text = "Washington", Value = "B"}
    
                };
                return items;
            }
    
    
        }
    }
    

    And its working COOL now :-)

    Thank you!!

    0 讨论(0)
提交回复
热议问题