Bob Cichon
Bob Cichon

Reputation: 209

Getting Values to Dropdown from Model

I am trying to pull a list from my ViewModel to populate a drop-down. I can get the objects from the Model and pass them to the View, but the view just shows the name of the ViewModel as the value in the dropdown. Not sure how to get the actual values to the Dropdown or if am going in the wrong direction. No intellesence past the definition of the object "model.InitialFeesChart". Thanks in advance for looking.

Controller: Objects contain needed data

   public ActionResult CreateFranchise()
    {
        var model = new FranchiseVM();
        model.FranStates = new List<string> { "AZ", "NV", "CA" };

        //Grap the Package Identificaton to determine Package selected by Franshise
        model.InitialFeesChart = (from f in _db.InitalFeesCharts
                            select new InitalFeesChartVM {IFCPackage = f.IFCPackage}).ToList();

        return View(model);
    }

ViewModel:

namespace Compass.Models
{
    public class FranchiseVM
    {
        [Key]
        public int FranchiseID { get; set; }
        public string FranPID { get; set; }
        public string FranBusinessName { get; set; }
        public string FranAddress { get; set; }
        public string FranCity { get; set; }
        public string FranState { get; set; }
        public string FranPostalCode { get; set; }
        public string FranPhonePrimary { get; set; }
        public string FranPhonePrimaryCell { get; set; }
        public string FranFAX { get; set; }
        public string FranOwnerFirstName { get; set; }
        public string FranOwnerLastName { get; set; }
        public string FranAlternateFirstName { get; set; }
        public string FranAlternateLastName { get; set; }
        public string FranAlternatePhone { get; set; }
        public string FranNotes { get; set; }
        public string IFCPackageCurrent { get; set; }

        public IList<string> FranStates { get; set; }

        //public IList<InitalFeesChartVM> InitialFeesChart { get; set; }

//Added

public string IFCPackage { get; set; }

            private readonly List<InitialFeesChart> _InitialFeesChart;
            public IEnumerable<SelectListItem> IFCItems
            {
                get { return new SelectList(_InitialFeesChart, "InitialFeesID", "IFCPackage"); }

            }



    }
}

View:

 <div class="form-group">
        @Html.LabelFor(model => model.IFCPackageCurrent, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownListFor(model => model.IFCPackageCurrent, Model.IFCItems))
        </div>
    </div>

Final working code:

ViewModel

    public IList<InitalFeesChartVM> InitialFeesChart { get; set; }
    [Display(Name = "Franchise Package")]
    public string IFCPackageCurrent { get; set; }

View:

<div class="form-group">
    @Html.LabelFor(model => model.IFCPackageCurrent, new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownListFor(model => model.IFCPackageCurrent, new SelectList(Model.InitialFeesChart, "InitialFeesID", "IFCPackage"))
    </div>
</div>

Controller:

public ActionResult CreateFranchise()
        {
            var model = new FranchiseVM();
            model.FranStates = new List<string> { "AZ", "NV", "CA" };

            model.InitialFeesChart = (from f in _db.InitalFeesCharts select new InitalFeesChartVM { IFCPackage = f.IFCPackage, InitialFeesID = f.InitialFeesID }).ToList();


            return View(model);

Upvotes: 0

Views: 108

Answers (1)

solidau
solidau

Reputation: 4081

You need to specify what properties to use in the Select List. Specify the value field and the text field like this: SelectList(Items, "Id", "Title")

I've created a fiddle that uses your classes. You will have to change the string values in the part when the select list is created so that they match the properties you want to use from your InitalFeesChartVM http://dotnetfiddle.net/9052ZH

Upvotes: 3

Related Questions