ASP NET MVC中表格的下拉列表

时间:2014-11-24 20:18:03

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

我想从表中获取带有值的下拉列表。我有模特:

namespace MobileService.Models
{
    public class Mobile
        {
            public int Id { get; set; }

            public string Model { get; set;}

            Public string EMEI { get; set ;}

            public int MasterId { get; set; }

            public List<Master> MasterList { get; set; }
    }

    public class Master
    {
        public int Id { get; set; }

        public string Name { get; set; }
    }

}

在控制器I中为此模型创建动作:

    public ActionResult Create()
    {
        return View();
    }

在视图中:

@model MobileService.Models.Mobile
@using (Html.BeginForm()) {

 @Html.EditorFor(model => model.Model)
 @Html.EditorFor(model => model.EMEI )
 // And here i want to display a dropdown list with all available masters

<button type="submit" class="btn btn-primary">Creat</button>
}

但它总是告诉我Model.MasterList为null。但为什么?在模型中,我告诉从另一个模型获取列表(公共列表MasterList {get; set;} )。为什么它是空的?

3 个答案:

答案 0 :(得分:0)

此代码在VB中。一开始,即使我找了很多时间,这也是我找到的简单解决方案。

将模型转换为selectListItems列表

Dim lstEmpTypes As New List(Of SelectListItem)



lstTicketWrTypes.Add(New SelectListItem With {.Text = row("Something"), .Value = row("Something")})

&#39;然后将其加载到ViewBag

ViewBag.EmpTypes = lstEmpTypes 

&#39;并在你的视图中

                 @Html.DropDownList("selectWrType", New SelectList(ViewBag.EmpTypes , "Value", "Text"), New With {.class = "span3"})

答案 1 :(得分:0)

当您查询Mobile时,您需要包含(“MasterList”),或者在您的上下文中启用延迟加载(不推荐)

答案 2 :(得分:0)

我的答案是将其添加到控制器:

   public ActionResult Create()
    {    
     ViewBag.MasterId = new SelectList(db.Masters, "Id", "Name");
     return View();
    }

然后是为了显示droplist:

 @Html.DropDownList("MasterId", null, htmlAttributes: new { @class = "form-control" })

Thnx ZikO 谁让我现在该列表没有自动加载。