問題タブ [sitemapprovider]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - ロール属性のみを使用し、他の場所でルールを許可/拒否しないサイトマップセキュリティトリミング
タグには、他の方法で解決できる「url」属性を持たないノードを補うための「roles」属性があることを認識しています。これらの他の方法には興味がありませんが、サイトマップファイルにすべての権限を設定したいと思います。これを達成する方法は?
カスタムRoleProvider、カスタムMembershipProvider、およびデフォルトのXmlSiteMapProviderを使用しています。また、直接URLを使用してそこに到達するのを防ぐためのセキュリティIHttpModuleもあります。私はさまざまなアプローチを受け入れています。
前もって感謝します!
asp.net - Sharepoint: カスタム リストのカスタム SiteMapProvider
SiteMapNodes の title プロパティをカスタマイズする必要があります。
私は WSS を使用しており、カスタム ドキュメント ライブラリを作成しました。このライブラリをナビゲートしているときに、リスト名の上に表示されるパンくずリストのノードの名前を変更したいと考えています。
これまでのところ、私は持っています:
- System.Web.SiteMapProvider から継承するクラスを作成し、
- 私のクラスをweb.configに追加し、
- sharepoint default.master ページの sitemappath (PlaceHolderTitleBreadcrumb 内) を変更して、新しいサイト マップ プロバイダーを指すようにしました。
次に、CurrentNode プロパティを上書きして、CurrentNode.title を目的の名前で編集しました。
私の問題は、以前のすべてのノード (親ノード) が元の名前に戻ることです。ナビゲートされたすべてのノードが新しいタイトルを保持するようにブレッドクラムを編集するにはどうすればよいですか?
アドバイスや指示をいただければ幸いです。
asp.net - MasterPage の ASP.Net TreeView コントロールが常に読み込まれるとは限らない
私は初めての ASP.Net プロジェクトに取り組んでいますが、すぐに深いところに投げ込まれたようです。私のサイト ファイルはすべてデータベースに保存されているため、VirtualPathProvider を使用してアクセスしています。その部分はうまく機能しますが、ユーザーがファイルを追加/削除するため、すべてのファイルを動的に取得するサイト マップが必要でした。そのために、StaticSiteMapProvider を継承するクラスを作成し、マスター ページに SiteMapDataSource を作成し、それを使用する TreeView を作成しました。ほとんどの場合、これでうまくいきます。ページをロードすると、TreeView が表示され、必要なすべてのノードが含まれています。ただし、時々 TreeView は完全に空白になり、ノードがまったくありません。TreeView をコンテンツ ページにコピーしました。MasterPage が機能しない場合でも、コンテンツ ページの TreeView は常に機能します。(私もしませんでした。
それをデバッグしようとして、コードが実際に実行されていることを証明するために、SiteMapProvider の BuildSiteMap() 関数に例外をスローしました。私が見つけたのは、毎回例外が発生したことです。ただし、スタック トレースは毎回同じではありませんでした。
ほとんどの場合、これは私が得たものです:
ただし、TreeView が空白になるのとほぼ同じ頻度で、次のようになりました。
便利なコードは BuildSiteMap 関数だと思います。
AddFolders() と AddFiles() は同じことを行うだけなので、簡潔にするために、誰かが重要だと思わない限り省略します。
ここにツリービューのコードを投稿しようとしましたが、サイトはあまり気に入っていないようです。実行時に割り当てるのではなく、DataSourceID プロパティを設定していると言えます。私は両方の方法で試しましたが、違いはないようです。
他に何が役立つかはよくわかりませんので、詳細が必要な場合はお知らせください。
今、これが私の問題の手がかりになるのか、それとも単なる偶然なのか疑問に思っています. それが手がかりなら、私はそれを理解するには密度が高すぎます。これは他の誰かにとって意味がありますか?
.net - SiteMapNode のタイトルを動的に変更する
次のように、セキュリティ トリミングを備えたボグ標準のデフォルト サイトマップを使用する Web サイトがあります。
Title
すべて順調ですが、いくつかのバックエンド基準に基づいて 1 つのノードの を変更する要求が来ました。単純なことのように聞こえますが、明らかにそうではありません。
試行 1 -SiteMapResolve
イベントの処理。このイベントがどこで処理されるかは問題ではないようです。それを示したGlobal.asax
のは、それが私が試した場所の 1 つであり、機能したからです。
これは、関連するページに移動したときに問題なく機能しましたが、残念ながら、サイト ナビゲーションの一部には、次のようにサイト マップにデータ バインドされたコンボ ボックスが含まれます。
このメニューがレンダリングされるときSiteMapResolve
、現在のノードはメニューが定義されているページであるため、どのコンテンツに対してもイベントは発生しません。その結果、メニューには、正しいタイトルではなく、物理的なサイトマップ ファイルからの無意味なプレースホルダー タイトルが表示されます。
試行 2 - 独自のサイトマップ プロバイダーを作成します。デフォルトの動作をすべて複製したくなかったので、次のようにデフォルトのプロバイダーから派生させてみました。
GetChildNodes
サイトをナビゲートするときにあまり頻繁に呼び出されないように見えるため、これは機能しません。
試行 3 - データがアクセスされたときではなく、メモリに読み込まれた直後にデータを修正してみてください。
これはうまくいくようです。ただ、メソッドGetAllNodes
内のへの呼び出しが気になります。BuildSiteMap
1 つの値を修正するためだけにすべてのデータを再帰的にメモリにプルするのは、私には間違っているように思えます。また、いつBuildSiteMap
呼び出されるかを制御することはできません。ノードデータが最初に必要になったときにオンデマンドで呼び出される、Attempt 1 のようなものをお勧めします。
試行 4 (新規) - 試行 2 と同様ですが、データの読み取りに関係するすべての仮想メンバー ( CurrentNode
、FindSiteMapNode
、FindSiteMapNodeFromKey
、GetChildNodes
、GetCurrentNodeAndHintAncestorNodes
、GetCurrentNodeAndHintNeighborhoodNodes
、GetParentNode
、)をオーバーライドしてGetParentNodeRelativeToCurrentNodeAndHintDownFromParent
、どこかで動的ノードの読み取りをインターセプトしようとします。GetParentNodeRelativeToNodeAndHintDownFromParent
HintAncestorNodes
HintNeighborhoodNodes
これはうまくいきませんでした。オーバーライドされたすべてのメンバーにデバッグ ステートメントを配置しましたが、ドロップダウン リストにデータをバインドするときに、それらのステートメントがまったく呼び出されないようです。BuildSiteMap
私が考えることができる唯一の説明は、呼び出し中にすべてのノードが一度にメモリに読み込まれるため、SiteMapNode
子ノードを列挙するときにプロバイダークラスにヒットしないということです。
誰にもより良い提案がありますか?
asp.net - ASP.NET: カスタムの動的に設定されたサイト マップ (SiteMapProvider)
私は最初の非常に独自のSiteMapProvider
サブクラスを作成しようとしています。Web で見つけたすべての例と同様に、さまざまなデータベース ルックアップを使用して動的に入力することを意図しています。
しかし、私には非常に不明確なことがたくさんあります。これが私の最初の2つの質問です。
StaticSiteMapProvider
の代わりに、事実上すべてのプロジェクトで使用されるのはなぜSiteMapProvider
ですか? クラスには「静的」という名前が含まれているため、私が望んでいるほど動的ではないという印象を受けています。SiteMapProvider
誰かが静的データのみを使用してマップにデータを入力する、つまりデータベースアクセスなどを行わない、超最小限のサブクラスを提供できますか?
asp.net-mvc - サイトマップと動的 (データベース) ページを混在させていますか?
サイト用の静的な.sitemapファイルがあります。各メインカテゴリ(@Products )に5つのサブカテゴリを追加して、メニューに表示されるようにしたい(メニューは機能するカスタムヘルパーです。実行時にいくつかのページに追加するだけです...)これは可能ですか?Sitemap.Provider
サイトマップ:
asp.net-mvc - 効率的なルートと ASP.NET サイトマップを使用して、このナビゲーション シナリオをモデル化する方法は?
次のシナリオをモデル化する必要がありますが、MvcSitemapProvider で動作させることができません (私の問題は、デフォルトの SiteMapProvider にも直接マップされていると思います)。デフォルトのブレッドクラム コントロールを動的データで適切に動作させたいと考えています。
products
グループ化されたリストがありcategory
ますparent-category
- 親カテゴリ
- カテゴリー
- 製品
次の URL を使用できるようにしたい:
(1) /Products
(2) /Products/MainCategory
(3) /Products/MainCategory/Category
(4) /Products/MainCategory/Category/Product
明らかに、以下の私の解決策は最適ではありません。
サイトマップのProducts
ノードには ChildNodes がないため、メニューに表示されません。
メインカテゴリとカテゴリを追加する中間オブジェクトを作成して、メニューに表示されるようにしました。しかし、他のコントロール (ブレッドクラム) は私が /Products にいると言っているだけなので、これは問題を解決しません。
ルートを変更するか、サイトマップの定義を変更する必要がありますか? それとも何か他のものですか?
私は現在、次のものを持っています:
- 2
/Products、/Products/MainCategory および /Products/MainCategory/Category のルート 1 -> ProductsController.Index() へのマッピング
/Products/MainCategory/Category/Product の 1 -> ProductsController.Product() へのマッピング - dynamicParameters が定義されたサイトマップ内の 1 つのエントリ
(MainCategory;Category)
Global.asax ルート定義:
サイトマップに次のエントリがあります。
asp.net - SiteMapとURLルーティング
ここで説明されているものと同様の質問があります:
WebFormsを使用したASP.NETURLルーティング-SiteMapの使用
私のASP.NetWebFormsWebアプリケーションには、次のようなサイトマップがあります。
次の形式のURLが必要です
::// host / projects / {company} / {projectno} / Home
:// host / projects / microsoft / 10 / Home
:// host / projects / microsoft / 11 /レポート
:// host / projects / apple / 10 / ExtraReports
URLルーティングは/projects/ {company} / {projectno}/{pagename}を/Pages/{pagename}.aspxにルーティングします。
私のナビゲーションは、上部にホーム、レポート、プレゼンテーションを含むTabStripと、左側にサブアイテムを含むメニューで構成されています(たとえば、[ホーム]を選択すると、[ホーム]、[よくある質問]になります)。
私の質問:
重複したSiteMapNodeURLを処理する適切な方法は何ですか?
TabStripが:// host / Homeや:// host / ExtraReportsのようなURLを生成しないようにするにはどうすればよいですか?
現在の会社とprojectnoの選択を維持する必要があり、サイトマップは相対URLを無視しますTabStripおよびMenuコントロールは、アクティブな選択を表示するために、選択されたアイテムを認識する必要があります。これらすべてに対する適切な解決策は何ですか?
.net - .NET データベースからローカライズされたサイトマップ?
データベースからページをロードするカスタム サイトマップ プロバイダーがあります。
ページ(pageid、fk_pageid (親)、タイトル、url、show_in_menu)
ページをグローバル化/ローカライズしたいと考えtitle
ています。最良の方法は何ですか?
asp.net - Roles/Web.sitemap ファイルに基づいてカスタム メニュー項目を表示/非表示
標準のasp.netサイトマップを利用するカスタムメニューがあります。うまく機能しますが、一部のページは URL リライターによって動的に生成されるため、サイトマップ XML ファイルには含まれません。現時点では、CSS クラスを介してメニュー項目を表示/非表示にするカスタム ソリューションと、ユーザーの役割をプログラムでチェックするカスタム ソリューションを作成しました。サイトマップ ファイルに存在しない動的ページにアクセスするまでは問題なく動作します。セキュリティ トリミングを使用してサイトマップ ファイルの "roles" 属性を試しましたが、カスタム メニューがあるため機能しません。
一部のページがサイトマップにない場合でも、サイトマップ ファイルのロール属性を利用して、以下のカスタム コントロールのメニュー項目を表示/非表示にする方法はありますか? 私のメニューコントロールは以下にあります...