2012-04-11 16 views
0

私はmvc3アプリケーションを作成しました。 EFを使用してテーブルからドロップダウンリストを設定します。mvc3のドロップダウンリストを2つのテーブルから動的に取り込む方法は?

今私はtwo dropdownlistsを私のindex.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" /> 
} 

私はこれを行うことができますどのように?

から2つのドロップダウンに値を選択する必要がある場合は、次のコードは、唯一の作業のためであるように

私は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; } 
    } 
} 
+0

のasp.net mvc3でDropDownListコントロールを埋めるために完璧に動作を願っコントローラとしようとする }

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

追加モデルクラスの名前空間。両方のテーブルが正しく設定されていれば、正常に動作するはずです – Iridio

+0

@Iridio質問が更新されていることを確認してください – Neo

+0

ViewModel @Iron Ninjaを使用してhttp://blogs.msdn.com/b/rickandy/archive/2012/01 /09/cascasding-dropdownlist-in-asp-net-mvc.aspx - http://www.asp.net/mvc/tutorials/javascript/working-with-the-dropdownlist-box-and-jquery/usingも参照してください。 -the-dropdownlist-helper-with-aspnet-mvc見つからないことがあればお知らせします – RickAndMSFT

答えて

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を作成することがreccomendしてはならない リポジトリ

1

データエンティティを直接ビューにプッシュするのではなく、実際のモデルを使用することをお勧めします。このような何か、あなたのモデルのために使うべきことがあります

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

、その後、あなたのモデルが

@model MyModel 
0

ビューコード

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

コントローラコード

公共のActionResultインデックス() {newclass NW =新しい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 =新しいDataClasses2DataContext()。 公開IEnumerableメソッド { リストlt =(from db.Employeesは新しいClass1 {EmpName = val.EmpName、EmpId = val.EmpId}を選択します)Distinct()。ToList(); if(lt!= null) { var values = from val from lt orderby val。EmpId select val; 戻り値。 } else return null;それは、これはあなたのモデル `mydataEntities1`を投稿

関連する問題