問題タブ [sqlsitemapprovider]

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.

0 投票する
1 に答える
638 参照

asp.net - SqlSiteMapProvider-OnSiteMapChangedイベントは発生しませんか?

VB.NETを除いて、SqlSiteMapProviderのWickedCode実装を行っています。

問題を引き起こしているコードにはいくつかのことがあり、記事に書かれているようにコードがどのように機能するのかわかりません。以下の記事から直接コードを提供しました。見やすくするためにここにコードを貼り付けました

最初の問題-依存関係はツリーが作成される前にインスタンス化されます(行134-137)(151-160)-依存関係をhttp.cache(165-167)に追加するとすぐに、OnSiteMapChangedイベント(242)が発生しますすぐに-プロセス全体を再度実行します-これは、最終的に何かが停止するまで何度もループします。(私はそれをステップスルーし、コードが最後にヒットしたときを推測することをあきらめる前に、少なくとも20回ループするコードを数えました)

OK、これを修正するために、ツリーが構築された後、http.cacheに挿入する直前に依存関係を作成するようにコードを移動しました(したがって、http.cacheに追加するときにHasChangedプロパティはfalseであり、スタックしませんこの疑似ifinite-loopで)。

しかし、まだ問題があります-ページが読み込まれるたびに、BuildSiteMap()がヒットし、121行目で_rootがnullでないかどうかがチェックされます-最初にビルドされた後はnullになることはないようです...これは私がしないので良いことです毎回DBをヒットしたい。ここで、テーブルにレコードを挿入します...OnSiteMapChangedイベントは発生しません。アプリでページを閲覧すると、サイトマップに新しく挿入されたレコードが反映されません。コードをステップスルーすると、121行目のチェックで関数が短絡していることがわかります...サイトマップは、次の場合にのみ更新されます。 -Visual Studioを起動します。これにより、プライベート_rootフィールドが再びnullになり、新しい変更を反映してサイトマップが再構築されます。(ブラウザの更新または新しいブラウザインスタンスの起動は機能しません)...

編集:私のストアドプロシージャの上部にある愚かな「SETNOCOUNTON」ラインからの問題。明らかに、これはクエリ通知を壊します。このステートメントは結果セットと見なされ、2番目の実際のクエリステートメントは結果セットを無効にして通知を生成するようです。これは見つけるのが非常に難しく、コメントを追加するまで、MSDNドキュメントのどこにもありませんでした。これが私が経験したけちな人を救うことを願っています!

0 投票する
1 に答える
639 参照

.net - .NET データベースからローカライズされたサイトマップ?

データベースからページをロードするカスタム サイトマップ プロバイダーがあります。

ページ(pageid、fk_pageid (親)、タイトル、url、show_in_menu)

ページをグローバル化/ローカライズしたいと考えtitleています。最良の方法は何ですか?

0 投票する
1 に答える
134 参照

sqlsitemapprovider - バックアップを上書きする

毎日バックアップを作成するジョブを設定する必要があります。また、既存のバックアップを上書きする必要があります。誰かがそれを手伝ってくれませんか。

ありがとう、

0 投票する
2 に答える
1591 参照

asp.net - ブレッドクラムではなくメニューにノードが表示されないようにする方法(SqlSiteMapProviderを使用)

邪悪なコードsqlsitemapproviderまたはVBバージョンを使用しています。ほとんどのことがうまくいっています!しかし、sitemappathに表示されたままで、一部のノードがメニューに表示されないようにしたい場合、それを理解できません。sqlsitemapproviderコードを変更しようとしましたが、失敗しました。David Sussman(sp.netから)の答えを見つけました。しかし、それは.sitemapファイル用でした。それで、どうすれば上記のSQLサイトマッププロバイダーで同じことを行うことができますか?

SiteMapテーブルにvisibleという名前の列を追加しました。そのタイプはビットで、次の変更を行いました(このような長いコードで申し訳ありません)。

そして私はこのエラーを受け取ります:

私が欲しいのは、sqlsitemapproviderに、visible = "true/false"という名前の属性を各sitemapnode内に含めるように指示することです。これはサイトマップパスとメニューの追加属性になるため(私は思う)、このコードはブレッドクラムではなくメニューで非表示の仕事をします(私の質問で上記にリンクしたのと同様のファイル.sitemapベースのスレッドに対するDavid Sussmanの応答によると) :

これを達成する方法は?ありがとうございました。

更新:このページに非常に近いものを見つけまし たが、それでもソリューションを展開できません。