I have BaseController which I pass my header with @Html.Action but I am trying to pass my UI elements inside other controller's actions via BaseController.
我有BaseController,我用@ Html.Action传递我的标题,但我试图通过BaseController将我的UI元素传递到其他控制器的操作中。
BaseController : var UIElements = new BL.UIElements().GetUIElementsListForWeb(language); var MenuItems = new BL.Menu().GetMenuListForWeb(language, true, null, null);
BaseController:var UIElements = new BL.UIElements()。GetUIElementsListForWeb(language); var MenuItems = new BL.Menu()。GetMenuListForWeb(language,true,null,null);
HomeLayout : @Html.Action("_header", "Base") @RenderBody()
The problem is RenderBody() is trying to pass model first. And UIElements inside view (@Model.UIElements.contactUs
) is coming null. I dont want to repeat my code and put UIelements inside every controller's action.
HomeLayout:@ Html.Action(“_ header”,“Base”)@RenderBody()问题是RenderBody()试图先传递模型。视图中的UIElements(@ Model.UIElements.contactUs)将变为null。我不想重复我的代码并将UIelements放在每个控制器的操作中。
What should I do. How can I render my partial view first?
我该怎么办。如何首先渲染部分视图?
I hope you can understand my problem.
我希望你能理解我的问题。
Thanks & Regards
感谢和问候
1 个解决方案
#1
0
You need to generate those UI elements in this Header
action:
您需要在此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
}
In your Layout you can use it
在您的布局中,您可以使用它
@Html.Action("Header", "Base" new {language = "en"}) //set your language parameter here
#1
0
You need to generate those UI elements in this Header
action:
您需要在此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
}
In your Layout you can use it
在您的布局中,您可以使用它
@Html.Action("Header", "Base" new {language = "en"}) //set your language parameter here