如何迭代"相关链接"使用C#

时间:2012-11-09 13:47:13

标签: c# user-controls umbraco

我在使用umbraco默认数据类型“相关链接”时遇到问题。我的问题是我想迭代属性的子/选项。我已经看过使用xml和xslt的例子,但我想知道是否有可能在用户控件中使用纯c#。

像这样(但是一个有效的变体)

Node node = new Node(Node.getCurrentNodeId());
var linklist = node.GetProperty("link");
if (node.GetProperty("link") != null)
{
    foreach (var item in linklist)
    { 
        //get each item here
    }
}

谢谢!

(我还发布了问题here

3 个答案:

答案 0 :(得分:8)

我认为你应该可以做这样的事情(Razor)

@using umbraco.MacroEngines
@inherits DynamicNodeContext
@{
    var root = Model.AncestorOrSelf();
    var links = root.FooterLinks.link;
    <ul class="nav nav-pills">
    <li><span>@Dictionary.RelatedLinks</span></li>
    @foreach (var item in links)
    {
        var url = item.type == "internal" ? Library.NodeById(item.link).Url : item.link;
        var rel = item.type == "external" ? " rel=\"external\"" : string.Empty;
        var title = item.title;
        <li><a href="@url"@Html.Raw(rel)>@title</a></li>
    }
    </ul>
}

答案 1 :(得分:1)

您知道XML序列化/反序列化吗?

我会研究这个领域,通过将XML反序列化为C#对象(如阵列列表),可以更轻松地读取XML数据。

http://www.switchonthecode.com/tutorials/csharp-tutorial-xml-serialization

希望这是有用的。

答案 2 :(得分:0)

好的,所以这就是我做的工作。我使用了Jorge的答案,但改变了一点,非常少。借助于查看umbraco.config,我就是这样做的

@using umbraco.MacroEngines
@using umbraco.NodeFactory;
@{
var root = Model;
var links = root.link;
if (links == null)
{
    return;
}
foreach(var item in links)
{
    DynamicNode linkNode = Model.NodeById(@item.link);
    Response.Redirect(@linkNode.Url);
    break;
}
}

我想我可以在用户控件中使用一些Derek的asnwer。我的意思是我可以像往常一样选择属性和使用的XmlTextReader来读取所选属性的xml部分。谢谢你的呐喊!