ViewBag / ViewDataを使用して、アクションメソッドからビューにデータを渡すことは避けてください。あなたは今、これがあなたの見方を少し汚くしたことに気づいたに違いありません。強く型付けされたビューモデルを使用します。
あなたの見解が何かを作成することであると仮定します。そのためのビューモデルを作成します。各ステージに複数のアクションがあると仮定します。
public class CreateSomeThingVM
{
public string Title { set;get;}
public List<Stage> Stages { set;get;}
public CreateSomeThingVM()
{
Stages=new List<Stage>();
}
}
public class Stage
{
public int ID { set;get;}
public string StageName { set;get;}
public List<Action> Actions { set;get;}
public Stage()
{
Actions =new List<Action>();
}
}
public class Action
{
public int ID { set;get;}
public string ActionName { set;get;}
}
そして、Actionメソッドで、データを取得してプロパティを設定します。
public ActionResult Create()
{
var vm=new CreateSomeThingVM();
vm.Stages=GetListOfStagesFromSomeWhereWithItsActions();
return View(vm);
}
メソッドが適切なオブジェクトGetListOfStagesFromSomeWhereWithItsActions
のリストを返すと仮定します(各ステージに関連するアクションを取得するには、必要に応じてここでフィルタリングを実行する必要があります)。Stage
Actions
CreateSomeThingVMビューモデルに強く型付けされたビューに、クリーンなコードを記述します。
@model CreateSomeThingVM
@foreach(var stage in Model.Stages)
{
<h2>@stage.StageName</h2>
foreach(var action in Model.Actions)
{
<p>@action.ActionName</p>
}
}