OnlyBreadCrumbMVCSiteMapNodeAttribute を作成しました。属性が必要なコードを装飾します
public class OnlyBreadCrumbMvcSiteMapNodeAttribute : MvcSiteMapNodeAttribute
{
public OnlyBreadCrumbMvcSiteMapNodeAttribute(string title, string parentKey)
{
Title = title;
ParentKey = parentKey;
VisibilityProvider = typeof(BreadCrumbOnlyVisibilityProvider).AssemblyQualifiedName;
}
public OnlyBreadCrumbMvcSiteMapNodeAttribute(string title, string parentKey, string key)
{
Title = title;
Key = key;
ParentKey = parentKey;
VisibilityProvider = typeof(BreadCrumbOnlyVisibilityProvider).AssemblyQualifiedName;
}
}
可視性プロバイダーもある
public class BreadCrumbOnlyVisibilityProvider : ISiteMapNodeVisibilityProvider
{
public bool IsVisible(SiteMapNode node, HttpContext context, IDictionary<string, object> sourceMetadata)
{
if (sourceMetadata["HtmlHelper"] == null || (string)sourceMetadata["HtmlHelper"] == "MvcSiteMapProvider.Web.Html.SiteMapPathHelper")
{
return true;
}
return false;
}
}
のように使う
[OnlyBreadCrumbMvcSiteMapNode("Upload Documents", "AssetDocuments")]
public virtual ActionResult FileUpload(int assetId)
Upload Documents はブレッドクラムのタイトルになります。AssetDocuments は親キーです
3 番目のパラメータを渡すと、ブレッドクラム ノード自体のキーが設定されます