如何从两个表中在mvc3中动态填充下拉列表?

时间:2012-04-11 15:55:19

标签: asp.net-mvc asp.net-mvc-3 model-view-controller

我创建了mvc3应用程序。 使用EF从表中填充下拉列表的地方。

现在我的two dropdownlists index.cshtml分别来自不同的表格。

code index.cshtml:

我已将模型视为实体,因为它同时包含我的表table1table2

@model Mapping.Models.mydataEntities1

但问题是在这里我无法从两个表中选择值。 :(

像下面的代码只是在我给的时候才能工作 模型@model Mapping.Models.table1

但需要从不同的表格中选择两个下拉列表

@using (Html.BeginForm())
{
    @Html.DropDownListFor(
        x => x.CategoryId, 
        new SelectList(Model.Categories, "Value", "Text"),
        "-- Select category --"
    )
    <input type="submit" value="OK" />
}

我该怎么做?

我用过EF

 public partial class mydataEntities1 : DbContext
    {
        public mydataEntities1()
            : base("name=mydataEntities1")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public DbSet<table1> table1 { get; set; }
        public DbSet<table2> table2 { get; set; }
    }
}

3 个答案:

答案 0 :(得分:1)

我建议使用实际的“模型”,而不是直接将数据实体推送到视图中。这样的东西可能是你应该用于模型的东西:

public class MyModel
{
    public Mapping.Models.table1 table1;
    public Mapping.Models.table2 table2;
}

然后你的模型就会变成

@model MyModel

答案 1 :(得分:1)

我不是EF用户,但假设您的模型已填充且工作正常 以下代码应该有效

@Html.DropDownListFor(
    x => x.table1.CategoryId, 
    new SelectList(Model.table1.Categories, "Value", "Text"),
    "-- Select category --"
)

@Html.DropDownListFor(
    x => x.table2.CategoryId, 
    new SelectList(Model.table2.Categories, "Value", "Text"),
    "-- Select category --"
)

但我强烈建议您创建一个ViewModel,以便将您的数据公开给View而不是您的域实体或直接存储库。

答案 2 :(得分:0)

查看代码

   <%: Html.DropDownList("courses","--select--")%>

控制器代码

公共ActionResult索引()         {newclass nw = new newclass();

        IEnumerable<SelectListItem> lt = nw.method().Select(c => new SelectListItem
        {
            Text = c.EmpName,
            Value = c.EmpId.ToString()
        });
        ViewData["courses"] = lt;

        return View();
    }

模型代码

公共类newclass     {         DataClasses2DataContext db = new DataClasses2DataContext();         public IEnumerable方法()         {             List lt =(from db.Employees中的val选择新的Class1 {EmpName = val.EmpName,EmpId = val.EmpId})。Distinct()。ToList();             if(lt!= null)             {                 var values = from val in lt orderby val.EmpId select val;                 回报值;             }             其他                 return null;         }

}
public class Class1
{

    public int EmpId{get;set;}
    public string EmpName { get; set; }
    public string location { get; set; }
    public Int64 Phno{get;set;}

}

将模型类命名空间添加到控制器并尝试希望这将完美地填充asp.net mvc3中的dropdownlist