我有BaseController,我用@ Html.Action传递我的标题,但我试图通过BaseController将我的UI元素传递到其他控制器的动作中。
BaseController:
var UIElements = new BL.UIElements().GetUIElementsListForWeb(language);
var MenuItems = new BL.Menu().GetMenuListForWeb(language, true, null, null);
HomeLayout:@Html.Action("_header", "Base")
@RenderBody()
问题是RenderBody()试图首先传递模型。视图中的UIElements(@Model.UIElements.contactUs
)
即将到来。我不想重复我的代码并将UIelements放在每个控制器的操作中。
我该怎么办?如何首先渲染部分视图?
我希望你能理解我的问题。
谢谢&此致
答案 0 :(得分:0)
您需要在此Header
操作中生成这些UI元素:
[ChildActionOnly]
public ActionResult Header(string language)
{
var UIElements = new BL.UIElements().GetUIElementsListForWeb(language);
var MenuItems = new BL.Menu().GetMenuListForWeb(language, true, null, null);
var model = new HeaderModel{
UIElements = UIElements,
MenuItems = MenuItems
}
return PartialView("_header", model)
}
public class HeaderModel
{
public IList<UIElement> UIElements {get; set;} //list of UI Elements
public IList<MenuItem> MenuItem{get; set;} //list of MenuItems
}
在您的布局中,您可以使用它
@Html.Action("Header", "Base" new {language = "en"}) //set your language parameter here