从模型下拉获取值

本文关键字:获取 模型 | 更新日期: 2023-09-27 17:51:07

我正试图从我的ViewModel中拉出一个列表来填充下拉列表。我可以从模型中获取对象并将它们传递给视图,但视图只是将ViewModel的名称作为下拉菜单中的值显示。不知道如何得到实际值下拉或如果我走错了方向。没有智能超出对象"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);
    }

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; }
//添加

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

从模型下拉获取值

您需要指定在Select List中使用哪些属性。像这样指定值字段和文本字段:SelectList(Items, "Id", "Title")

我已经创建了一个使用您的类的小提琴。当创建选择列表时,您必须更改部件中的字符串值,以便它们与您想要从InitalFeesChartVM中使用的属性匹配http://dotnetfiddle.net/9052ZH