我有一個包含此行一個_layout.cshtml:如何在我的佈局中將數據傳遞給PartialView?
@{Html.RenderPartial("Menu");}
現在我想在一個模型到這個的RenderPartial功能通過。這個模型可以從我的倉庫中讀取。
如何和在哪裏(在代碼中)可以這樣做?
謝謝!
我有一個包含此行一個_layout.cshtml:如何在我的佈局中將數據傳遞給PartialView?
@{Html.RenderPartial("Menu");}
現在我想在一個模型到這個的RenderPartial功能通過。這個模型可以從我的倉庫中讀取。
如何和在哪裏(在代碼中)可以這樣做?
謝謝!
RenderPartial有一個重載,它可以將對象發送到局部視圖。 不要忘了在partialview的頂部定義@model以使用正確的對象類型。
@ Html.RenderPartial( 「視圖名」,對象)
額外的信息:
我認爲這將是更容易地創建一個MenuController是發生在:評論後MSDN
編輯存儲庫。然後讓它創建一個視圖,它在模型中接受所需的存儲庫,然後使用foreach將每個菜單項呈現爲actionlinks,並將菜單信息傳遞給它。
所以你必須在這您_layout.cshtml:
這在MenuController:
public class MenuController : Controller
{
private IMenuRepository _repository;
public MenuController(IMenuRepository repo)
{
_repository = repo;
}
//
// GET: /Menu/
public PartialViewResult Menu(string menu = null)
{
ViewBag.SelectedMenu = menu;
IEnumerable<MenuInfoObject> menus= _repository.Menus;
return PartialView(menus);
}
}
而且你MenuView:
@model IEnumerable<MenuInfoObject>
@{
Layout = null;
}
@foreach (var item in Model)
{
@Html.RouteLink(item.MenuName, new
{
controller = item.ControllerInfo,
action = item.ActionInfo,
}, new
{
@class = item.Menu == ViewBag.SelectedMenu ? "selected" : null
})
}
請問這是更接近解決方案?
還有另一種解決方案將數據傳遞給佈局中的局部視圖。你可以簡單地在你的_Layout.cshtml文件
@Html.Action("ActionName","ControllerName")
而在你的控制器補充一點:
[ChildActionOnly]
public ActionResult ActionName()
{
var model = new YourModel();
return PartialView(model);
}
的ChildActionOnly
屬性確保操作方法只能作爲一個孩子的方法被調用。此操作將在佈局中使用模型渲染相應的局部視圖。
我知道,但我在我的layout.cshtml文件。我在哪裏可以從存儲庫中讀取我的模型? –
張貼編輯...我希望它可以幫助。 –