2013-02-25 45 views
1

我在Layout.cshtml下面的代碼給用戶控件添加到標題:如何使widget之前渲染特設形狀

WorkContext.Layout.Header.Add(New.User(), "10");

然而,在報頭中的

<article class="widget-HeaderMenu widget-header widget-menu-widget widget" shape-id="5">

之前

<div class="user-display" shape-id="15">渲染(這被注入與WorkContext東西)

兩者都是正確的,但是順序需要顛倒以使用戶控件出現在菜單的右側。

我該怎麼做?

我很好奇,如果它確實與WorkContext.Layout.Header.Add(New.User(), "10");的第二個參數有關,即使將它設置爲9000以上,也不會出現任何問題?我將左邊的參數識別爲粘土物體的實例化。

編輯

經過一些試驗似乎第二個參數是區域內的注射形狀的順序。

EDIT2

我得到了我想要的BIJ增加<li>@Display(New.User())</li>到MenuWidget替代的作用。

交替將是:

@{ 
// Model is Model.Menu from the layout (Layout.Menu) 
var tag = Tag(Model, "ul"); 

var items = (IList<dynamic>)Enumerable.Cast<dynamic>(Model.Items); 

if (items.Any()) { 
    items[0].Classes.Add("first"); 
    items[items.Count - 1].Classes.Add("last"); 
    }  
} 
<nav id='topnav'> 

    <ul> 
     @DisplayChildren(Model.Menu) 
     <li>@Display(New.User())</li> 
    </ul> 
</nav> 

參見:How to control the rendering of a menu in Orchard

回答

0

最簡單的可能是爲你介紹一個新的區域。

+0

問題是用戶顯示(登錄)需要插入同一區域中的相同菜單結構中。 – Ytrog 2013-02-26 15:04:34

+0

你沒有說你真正想做的事情完全不同,就是建立一個自定義的菜單項。你找到的解決方案並不是很好的做法。建立一個自定義的菜單項類型是去這裏的方法。 – 2013-02-26 17:43:10