填充列表數據我新的ASP.NET MVC和我有一個組合框,我需要動態填充的局部視圖。從局部視圖
我的理解是,我可以把清單中的數據ViewBag的看法,這將是從我的部分觀點。
不過,我希望能夠使用從幾個不同的頁面的局部視圖。是否所有使用局部視圖的頁面都使用列表數據填充ViewBag?有沒有什麼辦法可以將其封裝在我的部分視圖中?
填充列表數據我新的ASP.NET MVC和我有一個組合框,我需要動態填充的局部視圖。從局部視圖
我的理解是,我可以把清單中的數據ViewBag的看法,這將是從我的部分觀點。
不過,我希望能夠使用從幾個不同的頁面的局部視圖。是否所有使用局部視圖的頁面都使用列表數據填充ViewBag?有沒有什麼辦法可以將其封裝在我的部分視圖中?
看這個問題訪問它們在你的部分觀點:ViewModel Best Practices。也許你應該創建一個包含列表數據的基本視圖模型,並且(如果需要的話)繼承其他視圖模型。
例如:
class ViewModelWithFooList
{
public List<Foo> FooList
{
get { return new List<Foo>() { new Foo("one"), new Foo("two"), new Foo("three") }; }
}
}
如果需要你可以繼承ViewModelWithFooList其他視圖模型。
在控制器:
public ActionResult GetList()
{
return View(new ViewModelWithFooList());
}
而在你的觀點:
@Html.RenderPartial("FooList", Model.FooList);
視圖和局部視圖 「FooList」 必須是強類型。
你應該使用
@Html.Partial("", yourData)
數據傳遞到局部視圖並使用
@ViewData.Model
但我哪裏會做的呢?從每個使用部分視圖的頁面? –
是的。如果ViewData.Model爲空,您可以定義「默認值」。但是,用我的答案是正確的。 – dknaack
謝謝。這是一個項目列表,不能有任何默認值。但是,我不能將這種邏輯封裝在局部視圖中,這讓我感到困擾。如果我從十幾個視圖使用它,那麼我需要添加代碼以在十幾個位置提供列表。 –
您可以使用一個孩子的行動這一點。
在做一個控制器,僅設置ViewBag並返回組合框的局部視圖的操作。
例如
[ChildActionOnly]
public ActionResult MyDropDown()
{
ViewBag.DropDown = blah;
return PartialView();
}
然後,需要使用下拉列表中的任何視圖使得它作爲一個孩子的行動。
例如
@{ Html.RenderAction("MyDropDown", "MyController"); }
我從來沒有使用它,但我認爲你也可以嘗試[this](http://msdn.microsoft.com/en-us/library/system.web.mvc.html.childactionextensions.renderaction.aspx)。 –