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

さて、これが私がそれを機能させるためにしたことです。私はホルヘの答えを使用しましたが、それを少し、ごくわずかに変更しました。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の回答を少し使用できたと思います。つまり、通常どおりプロパティを選択し、XmlTextReaderを使用して選択したプロパティのxml部分を読み取ることができたということです。あなたの半分をありがとう!

于 2012-11-12T08:44:50.187 に答える