0

mvc3 アプリケーションを作成しました。ここで、EF を使用してテーブルからドロップダウン リストを設定します。

two dropdownlists、私はindex.cshtmlそれぞれ異なるテーブルからデータを取得しています。

コード index.cshtml:

table1テーブルとテーブルの両方を持っているため、モデルをエンティティとして取得しましたtable2

@model Mapping.Models.mydataEntities1

しかし、問題はここにあります。両方のテーブルから値を選択できません。:(

次のコードのように、モデルを指定したときにのみ機能します@model Mapping.Models.table1

ただし、異なるテーブルから2つのドロップダウンに値を選択する必要があります

@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 を作成して、データをドメイン エンティティやリポジトリに直接公開するのではなく、View に公開することを強くお勧めします。

于 2012-04-11T16:30:28.487 に答える
0

コードを見る

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

コントローラーコード

public ActionResult Index() { newclass nw = 新しい newclass();

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

        return View();
    }

型式コード

public class newclass { DataClasses2DataContext db = new DataClasses2DataContext(); public IEnumerable method() { List lt = (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; 戻り値; それ以外の場合は 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のドロップダウンリストを埋めるために完全に機能することを願っています

于 2013-03-21T11:18:43.417 に答える