从模型中获取值

时间:2014-03-20 20:52:14

标签: c# asp.net-mvc asp.net-mvc-4 razor

我正在尝试从我的ViewModel中提取列表以填充下拉列表。我可以从Model中获取对象并将它们传递给View,但视图只显示ViewModel的名称作为下拉列表中的值。不确定如何将实际值输入Dropdown或者是否朝错误方向运行。没有智慧超过对象“model.InitialFeesChart”的定义。提前感谢您的光临。

控制器:对象包含所需数据

   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);
    }

视图模型:

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; }

//已添加

public string IFCPackage { get; set; }

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

            }



    }
}

查看:

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

最终工作代码:

视图模型

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

查看:

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

控制器:

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);

1 个答案:

答案 0 :(得分:3)

您需要在“选择列表”中指定要使用的属性。指定值字段和文本字段,如下所示:SelectList(Items, "Id", "Title")

我创造了一个使用你的课程的小提琴。创建选择列表时,您必须更改部件中的字符串值,以便它们与您在InitalFeesChartVM http://dotnetfiddle.net/9052ZH

中使用的属性相匹配