我可以使用什么而不是@Html.action?

时间:2021-04-16 19:39:26

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

相关文章