しかし、Googleで見つけられなかった解決策である問題に遭遇しました。 ドロップダウンリストを表示し、デフォルト値を設定する方法。 私は「経験者」のためだと思う-これは問題にはならないだろう。 これはかつて「ドライブスルー」するものであり、これに問題があったことを二度と思い出すことはありません。 しかし、初心者のために歩き回るのは非常に難しい場合があります。 正直に言うと、最初はドロップダウンリストを表示するのは困難でした。 ASP.NET MVCマニュアルは、PCPフレームワークのクイックスタートよりも1桁優れていますが。
このマニュアルは、ASP.NET MVCアプリケーションのEntity Frameworkの記事を読んで得られた知識を既に活用していることを前提としています 。 またはこれら: ASP.NET MVC 4チュートリアル
ドロップダウンのリストから始めましょう。
1)モデル。 例を単純化するための注釈とリンクはありません。
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace zf2.Models { public class NewsM { public int NewsMID { get; set; } public int ParentID { get; set; } public string Title { get; set; } public string AddTitle { get; set; } public string Description { get; set; } public string Content { get; set; } public DateTime ModDate { get; set; } } }
2)コントローラー。 コントローラーフォルダーを右クリックしてコントローラーを作成し、テンプレートを選択します:「Entity Frameworkを使用した読み取り、書き込み、およびビューを備えたMVCコントローラー」、モデルクラス「NewsM」、データコンテキストクラス:作成されたもの。
そして、それにメソッドを追加します。
// private void PopulateDepartmentsDropDownList(object selectedDepartment = null) { var departmentsQuery = (from d in db.NewsMs orderby d.NewsMID select d).ToList<NewsM>(); // , Contoso University //NewsMID = 0 - value //Title = "Add to root" - text departmentsQuery.Add(new NewsM { NewsMID = 0, Title = "Add to root" }); ViewBag.ParentID = new SelectList(departmentsQuery, "NewsMID", "Title", selectedDepartment); // departmentsQuery - , DropDownList //"NewsMID" - , value //"Title" - , text (, ) //selectedDepartment - selected. . }
次に、アクションで作成と編集を呼び出します。
// GET: /News/Create public ActionResult Create() { PopulateDepartmentsDropDownList(); return View(); } // GET: /News/Edit/5 public ActionResult Edit(int id = 0) { NewsM newsm = db.NewsMs.Find(id); if (newsm == null) { return HttpNotFound(); } // newsm.ParentID - selected . PopulateDepartmentsDropDownList(newsm.ParentID); return View(newsm); }
3)ビュー内。 次のコードを適切な場所に追加するだけです。
Create.cshtmlおよびEdit.cshtml
<div class="editor-label"> @Html.LabelFor(model => model.ParentID) </div> <div class="editor-field"> @Html.DropDownList("ParentID") <!-- "ParentID" , ViewBag.ParentID = new SelectList(... PopulateDepartmentsDropDownList. , "ParentID" , , ...--> @Html.ValidationMessageFor(model => model.ParentID) </div>
ところで、冒頭で説明したモデルは、ネストの動的メニューを保存および構築するためのテーブルです。 彼女とは別のケースもありました。 次の記事で説明します。