階層ツリーをレンダリングしようとすると、ASP.NET MVCでこれを行う方法がたくさんあります。これには以下のようにパーシャルビューを使用することができます。ここで
はあなたのシンプルな階層モデルは、あなたが/あなたのモデルを取得し、viewbagに入れて作るのいずれかの操作で、その後
public class HierarchicalModel
{
public HierarchicalModel()
{
this.Children = new List<HierarchicalModel>();
}
public String Name { get; set; }
public List<HierarchicalModel> Children { get; set; }
}
です。
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
var level0 = new HierarchicalModel() { Name = "item 0, level 0" };
level0.Children.Add(new HierarchicalModel() { Name = "item 0, level 1" });
level0.Children.Add(new HierarchicalModel() { Name = "item 1, level 1" });
level0.Children.Add(new HierarchicalModel() { Name = "item 2, level 1" });
var level1 = new HierarchicalModel() { Name = "item 3, level 1" };
level1.Children.Add(new HierarchicalModel() { Name = "item 0, level 2" });
level1.Children.Add(new HierarchicalModel() { Name = "item 1, level 2" });
level0.Children.Add(level1);
ViewBag.HierarchicalModel = level0;
return View();
}
ここでは、例という名前の部分図を作成する必要があります。ビュー/共有ディレクトリの_HierarchicalModel.cshtml。モデルが配置されている名前空間でMvcApplication4を置き換えます。
@model MvcApplication4.HierarchicalModel
<li>
@Model.Name
<ul>
@foreach (var item in Model.Children)
{
@Html.Partial("_HierarchicalModel", item);
}
</ul>
</li>
これをビューでレンダリングします。
@{
MvcApplication4.HierarchicalModel model = ViewBag.HierarchicalModel;
}
<p>
<ul>@Html.Partial("_HierarchicalModel", model)</ul>
</p>
これはこれを行う最も簡単な方法です。いずれにしても、循環参照と深い階層を気にする必要があります。
MvcApplication4は正確に何を表していますか? – Peter
プロジェクト名です。あなたのケースでは、モデルが存在する完全な名前空間に置き換えてください。あなたはまた、指導者 '@使用Your.Namespace;を使用してカミソリを追加することができます ここであなたはそれについてもっと読むことができます[link] http://stackoverflow.com/questions/3239006/how-to-import-a- namespace-in-razor-view-page – aruss