2013-02-25 44 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