1

Create アクションでは、エディター フィールドに情報を追加して Table1 に保存できますが、必要なフィールドの 1 つについては、Table2 の列から入力されたドロップダウン リストを選択して、Table1 に一度に保存できます。選択に応じて、フィールドの。Table2 のドロップダウン テーブルに情報を表示できましたが、Table1 には渡せませんでした。

モデル1:

public int id { get; set; }
    public string JobNo { get; set; }
    public string DelNo { get; set; }
    public Nullable<int> DeptToPack { get; set; }
    public string PackNo { get; set; }
    public Nullable<decimal> TargetHrs { get; set; }
    public Nullable<System.DateTime> PackingDate { get; set; } 
    public virtual Table2 Table2{ get; set; }

モデル 2:

public Table2()
{
    this.Table1= new HashSet<Table1>();
}

public int id { get; set; }
public string Dept { get; set; }
public virtual ICollection<Table1> Table1{ get; set; }

複合モデル:

public class Combined
    {
        public Table1 Table1 { get; set; }
        public Table2 Table2{ get; set; }
     }

ビューには現在、SaveChanges() を使用して編集し、データベースに保存できるすべてのフィールドのテキスト エディターが表示されます。HomeController の Create アクションの下

アクションを作成

public ActionResult Create()
        {


            IEnumerable<SelectListItem> items = _db.Table2
                .Select(c => new SelectListItem
                {
                    Value = c.Dept,
                    Text = c.Dept
                });

            ViewBag.Dropdownlist = items;


            return View();
        }


        [HttpPost]
        public ActionResult Create(Table1 table1)
        {
            if (ModelState.IsValid)
            {
                _db.Table1.Add(table1);
                _db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(table1);
        }

ビューには、table1 の情報と table2 の 1 つのフィールドが表示されます。@Html.DropDownList 要素に問題があるようです

私は現在、データを表示する(以下)を持っていますが、Table1に処理することはできません

 @Html.DropDownList("Table1.Field1", (IEnumerable<SelectListItem>) ViewBag.DropDownList)

うまくいけば、画像がそれをよりよく説明しています。塗りつぶされた入力ボックスは、Table2 の {InfoToPass} 列のドロップダウン リストである 1 つのフィールドを除いて、Table1 に保存されます。ここでは、4 つのオプションのうちの 1 つを選択できます。他のすべての入力は Table1 に保存されます

ここに画像の説明を入力

4

2 に答える 2

0

table1 オブジェクトを作成し、コントローラーに渡されるオブジェクトからそれに関連する値を渡す必要があります。次に、新しい table2 オブジェクトとそれに関連するパラメーターで同じことを行います。両方が適切に設定されたら、それぞれのテーブルに保存し、変更を保存します。

2 つのオブジェクトを整理した後、次のように保存して終了します。

_db.Table2.Add(table2);
_db.Table1.Add(table1);
_db.SaveChanges();
于 2013-02-15T03:20:40.767 に答える
0

私のシナリオでは、ドロップダウンリストに表示される特定の列値を提供するためにいくつかのテーブルを結合する必要がありました (そのため、linq クエリを無視できます)。ユーザーは、ドロップダウン リストから値 (存在する場合) を選択して、別のテーブル ( Table1 ) に保存できます。

ビューを作成:

    @model TharInfo2.Models.Combined

    <div class="editor-field">
    @Html.DropDownListFor(model => model.Table1.DelNo, (IEnumerable<SelectListItem>)ViewBag.Rev)
    </div>

コントローラーの作成:

        public ActionResult Create()
            {
            var rd = RouteData.Values["jobno"];
            var query = (from t in _db.table3
                         join d in _db.table2 on t.delivery_number equals d.ID
                         join m in _db.table4 on d.OrderNo equals m.JobNo
                         where m.JobNo == rd
                         select new
                              {
                                  t.rev_delivery_number
                              });


             IEnumerable<SelectListItem> rev_del = query
                        .Select(c => new SelectListItem
                        {
                            Value = c.rev_delivery_number,
                            Text = c.rev_delivery_number
                        });


             ViewBag.Rev = rev_del;


             return View();
             }




                [HttpPost]
                public ActionResult Create(Table1 table1)
                {



                    if (ModelState.IsValid)
                    {
                        _db.Table1.Add(table1);
                        _db.SaveChanges();
                        return RedirectPermanent("Index");


                    }

                    return View(table1);
                }
于 2013-02-19T08:29:44.997 に答える