5

我在使用 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
    }
}

谢谢!

(我也在这里发布了这个问题)

4

3 回答 3

8

我认为你应该能够做这样的事情(剃刀)

@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>
}
于 2012-11-09T15:38:11.877 回答
1

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

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

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

希望这是有用的。

于 2012-11-09T14:35:49.567 回答
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 部分。谢谢你的支持!

于 2012-11-12T08:44:50.187 回答