尽量避免使用 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>
}
}