29
作成経験がある方SQLベースのASP.NETサイトマッププロバイダ?ASP.NETサイトマップ
私は私のメニューとSiteMapPathはコントロールで正常に動作し、デフォルトのXMLファイルweb.sitemap
がありますが、私は私のサイトのユーザーは、動的にページを作成および変更するための方法が必要になります。
標準のASP.NET
メンバーシップシステムにページ閲覧許可を結びつける必要があります。
作成経験がある方SQLベースのASP.NETサイトマッププロバイダ?ASP.NETサイトマップ
私は私のメニューとSiteMapPathはコントロールで正常に動作し、デフォルトのXMLファイルweb.sitemap
がありますが、私は私のサイトのユーザーは、動的にページを作成および変更するための方法が必要になります。
標準のASP.NET
メンバーシップシステムにページ閲覧許可を結びつける必要があります。
のMSDNマガジンからジェフ・プロシースバージョンはかなりうまく動作しますが、それはいくつかの弱点があります:あなたのメニュー上の外部サイトへのリンクとアウト
AddNode
フリーク(www.google.comなど)
はここにBuildSiteMap()
で私の修正です:
SiteMapNode node = GetSiteMapNodeFromReader(reader);
string url = node.Url;
if (url.Contains(":"))
{
string garbage = Guid.NewGuid().ToString(); // SiteMapNode needs unique URLs
node.Url = "~/dummy_" + garbage + ".aspx";
AddNode(node, _root);
node.Url = url;
}
else
{
AddNode(node, _root);
}
SQLDependency
キャッシングは涼しいですが、DB毎回への旅行をしたくない場合は、メニューの負荷が(依存関係が変更されているかどうかを確認するために)とあなたメニュードン頻繁に変更されない場合は、代わりにHttpRuntime.Cache
を使用してください。
public override SiteMapNode RootNode
{
get
{
SiteMapNode temp = (SiteMapNode)HttpRuntime.Cache["SomeKeyName"];
if (temp == null)
{
temp = BuildSiteMap();
HttpRuntime.Cache.Insert("SomeKeyName", temp, null, DateTime.Now.AddHours(1), Cache.NoSlidingExpiration);
}
return temp;
}
}
最高の回答をお選びください。 – mruanova