2015-10-21 47 views
0

我有我通過我的標頭@ Html.Action BaseController,但我想通過我的UI控制器的行動通過BaseController的UI元素。我可以使用什麼而不是@ Html.action?

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

你需要生成此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 
+0

我已經這樣做,當你提及。但是我想在RenderBody()內部創建的視圖中使用這些UIElements。 – onurcan

+0

然後它真的不清楚你在問什麼...... –

+0

我確實在BaseController中定義了一個方法,我正在使用它來獲取UIElements。謝謝你的幫助。我解決了它。 – onurcan

相關問題