URLルーティングを使用するために、最近ASP.netサイト(MVC.netを使用しない)を設定しました。 (つまり、メニュー情報を保持するための「メニュー」ユーザーコントロールを作成しました)URLに1つ以上の変数が渡されたときに、そのコントロールのpage_loadイベントが2回発生します。asp.net URLルーティングを使用する場合のユーザコントロールの複数のPage_Loadイベント
すなわち
ページ名/ VAR1は:一度だけPage_Loadイベントを発生させます。
ページ名/ VAR1/VAR2
しばらくは:二回Page_Loadイベントを発生させます。
*最後に追加された複数のVARは、page_loadイベントを2回だけ発生させます*。
以下のファイルからコードsnippitsは、最初は、Global.asaxの中に位置MapPageRoute、である、以下のとおりです。
// Register a route for the Example page, with the NodeID and also the Test123 variables allowed.
// This demonstrates how to have several items linked with the page routes.
routes.MapPageRoute(
"Multiple Data Example", // Route name
"Example/{NodeID}/{test123}/{variable}", // Route URL - note the NodeID bit
"~/Example.aspx", // Web page to handle route
true, // Check for physical access
new System.Web.Routing.RouteValueDictionary
{
{ "NodeID", "1" }, // Default Node ID
{ "test123", "1" }, // Default addtional variable value
{ "variable", "hello"} // Default test variable value
}
);
次は、私は、メニュー内のページに向けてきた方法です。ページのロードに複数回にヒットを取得します
<li class="TopMenu_ListItem"><a href="<%= Page.GetRouteUrl("Multiple Data Example", new System.Web.Routing.RouteValueDictionary { { "NodeID", "4855" }, { "test123", "2" } }) %>">Example 2</a></li>
そして最後にコントロール:
項目は、これは、ULタグ内のリスト項目です// For use when the page loads.
protected void Page_Load(object sender, EventArgs e)
{
// Handle the routing variables.
// this handles the route data value for NodeID - if the page was reached using URL Routing.
if (Page.RouteData.Values["NodeID"] != null)
{
nodeID = Page.RouteData.Values["NodeID"] as string;
};
// this handles the route data value for Test123 - if the page was reached using URL Routing.
if (Page.RouteData.Values["Test123"] != null)
{
ExampleOutput2.Text = "I am the output of the third variable : " + Page.RouteData.Values["Test123"] as string;
};
// this handles the route data value for variable - if the page was reached using URL Routing.
if (Page.RouteData.Values["variable"] != null)
{
ExampleOutput3.Text = "I say " + Page.RouteData.Values["variable"] as string;
};
}
ページに当たってアイテムのデフォルト値を使用しているとき、リロードは起こらないことに注意してください。
誰でも提供できるヘルプやガイダンスは非常に高く評価されます。
編集:ユーザーコントロールはページに一度だけ追加されます。私はpage_loadイベントにブレークポイントを置くことでロードシーケンスをテストしました。余分なルートが追加されたときに2回だけヒットします。
EDIT2:これまで手伝ってくれた人にはもう一度感謝しています - 私はまだ二重負荷の原因を突き止めるのに苦労しています - それ以上の提案はありませんか?
EDIT3 /回答:以下の回答は、初期のサイト作成/インクルードからJavascriptファイルへの参照/基本的な参照を削除する方法を説明しています。私はこれがこの問題を抱えている誰にでも役立つことを願っています!事前に
おかげで、
ポール・ハトソン
私は考えているが、私は少数のより多くの時間のためにたむろすることをお勧めしたいです残りの北米は目を覚ます。数時間後に編集して、投稿をミックスに戻します。 – jcolebrand
本当にありがとうございます!私が作った明白な間違いを見つけてもらうことを願っています。 –