2

状況:
コンテンツツリーの「sitecore / Content / Home / mypage」にアイテム(ページ)があるとします。.aspxレイアウトでこのアイテムへのハイパーリンクを作成したいと思います。

質問:
.aspxレイアウトでこのアイテムへのハイパーリンクを作成するにはどうすればよいですか?

の適切な構文を思い出せません<asp:Hyperlink>

4

2 に答える 2

3

コードでアイテムの URL を取得する必要がある場合は、リンクで使用しているかどうかに関係なく、Sitecore.Links.LinkManager.GetItemUrl(item, options).

単一のパラメーター ( GetItemUrl(item)) で使用しないことをお勧めします。これは、構成オプション (パスの一部として言語文字列を無効にするなど) を尊重しないためです: の/en/path/to/item代わりに表示される可能性があります/path/to/item

構成オプションを使用するには、デフォルトの URL オプションを複製できます。

var opts = (UrlOptions) UrlOptions.DefaultOptions.Clone();
var url = LinkManager.GetItemUrl(item, opts);

私はこれを頻繁に使用するので、次の拡張メソッドを使用します。

public static string GetUrl(this Item source, bool absolutePath = false)
{
    if (source == null)
        throw new ArgumentNullException("source");
    var options = (UrlOptions) UrlOptions.DefaultOptions.Clone();
    options.AlwaysIncludeServerUrl = absolutePath;
    return LinkManager.GetItemUrl(source, options);
}

この形式を使用する利点は、アイテムを ID で識別し、コンテンツ ツリーのどこにあるかに関係なくリンクできることです。

于 2012-07-26T13:38:32.760 に答える
2

Adil の例で、URL が LinkProvider によって処理されるかどうかはわかりません。通常、分離コードで NavigateUrl プロパティをバインドします

<asp:HyperLink ID="hlHyperLink" runat="server" Text="my link text" />

次にC#で

hlHyperLink.NavigateUrl = Sitecore.Links.LinkManager.GetItemUrl(Sitecore.Context.Database.GetItem("path_to_item"));
于 2012-07-26T13:26:10.593 に答える