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

Clo*_*ign 3 c# umbraco razor

我只是找不到如何为Umbraco创建一个无序列表.

我能够得到prevalues,但我不能将它们作为前端列表输出.

到目前为止我的代码是:

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

 </ul>
Run Code Online (Sandbox Code Playgroud)

我正在回归那些价值观

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

    提前致谢.

  • Dou*_*low 6

    那是因为umbraco.library.GetPrevalues(int id)返回一个XPathNodeIterator如此简单地迭代值是不够的.在Umbraco Wiki中,您可以找到一个关于如何迭代和选择prevalues的一个很好的例子XPathNodeIterator.我已经重写它以适应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()   
    }
    
    Run Code Online (Sandbox Code Playgroud)