0

我已经创建了 mvc3 应用程序。在哪里使用 EF 从表中填充下拉列表。

现在two dropdownlistsindex.cshtml每个人都从不同的表中填充。

代码 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; }
    }
}
4

3 回答 3

1

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

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

然后你的模型就会变成

@model MyModel
于 2012-04-11T16:10:41.050 回答
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 以将您的数据公开给视图,而不是您的域实体或直接存储库。

于 2012-04-11T16:30:28.487 回答
0

查看代码

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

控制器代码

公共 ActionResult Index() { 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 method() { List lt = (from val in db.Employees select new Class1 { EmpName = val.EmpName, EmpId = val.EmpId }).Distinct().ToList(); if (lt != null) { var values = from val in lt orderby val.EmpId select val; 返回值;} 否则返回空值;}

}
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 中的下拉列表

于 2013-03-21T11:18:43.417 回答