Umbraco - 从多个下拉列表数据类型获取Prevalues并使用Razor创建无序列表

时间:2012-06-22 22:49:24

标签: c# razor umbraco

我无法找到如何为Umbraco创建无序列表。

我能够获得前值,但我不能将它们作为前端列表输出。

到目前为止我的代码是:

  var myValues = umbraco.library.GetPreValues(12080);
  <ul>
   @foreach(var c in myValues){
      <li><a href="@baseNode.Url?category=@c">@c</a></li>                      
     }

 </ul>

我将这些值作为一个

  • 项目取回,但它们没有被拆分。我尝试将.Split()添加到foreach中的myValues并向我抛出一个错误。我错过了什么吗?

    提前致谢。

  • 1 个答案:

    答案 0 :(得分:6)

    那是因为umbraco.library.GetPrevalues(int id)返回XPathNodeIterator所以简单地遍历这些值是不够的。在Umbraco Wiki中,您可以找到关于如何迭代并选择XPathNodeIterator的前值的great example。我已经重写它以适应Razor上下文:

    @using System.Xml.XPath
    @using umbraco.MacroEngines
    @inherits DynamicNodeContext
    @try
    {
        var baseNode = Model.AncestorOrSelf();
    
        XPathNodeIterator iterator = umbraco.library.GetPreValues(1094);
        iterator.MoveNext(); //move to first
        XPathNodeIterator preValues = iterator.Current.SelectChildren("preValue", "");
    
        @preValues.Count
    
        <ul>
        @while (preValues.MoveNext())
        {
            string preValue = preValues.Current.Value;
    
            <li><a href="@baseNode.Url?category=@preValue">@preValue</a></li>                      
        }
        </ul>
    }
    catch (Exception e)
    {
        @e.ToString()   
    }