儘量避免使用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);
}
Assumuing 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>
}
}
你在ViewBag中傳遞了什麼數據。應該有更好的方法來做到這一點。 – Shyju 2013-03-13 14:26:00