2011-10-20 18 views
3

私はかなり簡単なことをしようとしています。私はいくつかのユーザーコントロールを持っていますLinkButtons。各LinkButtonありOnCommandCommandNameCommandArgumentセットは、そのように:それは価値がある何のためLinkBut​​ton OnCommandまたはOnClick Not Firing

<ul id="continents"> 
    <li id="northamerica"><asp:LinkButton ID="lbNorthAmerica" OnCommand="ChooseRegion" CommandName="SetCookie" CommandArgument="North America" runat="server">North America</asp:LinkButton></li> 
    <li id="southamerica"><asp:LinkButton ID="lbSouthAmerica" OnCommand="ChooseRegion" CommandName="SetCookie" CommandArgument="South America" runat="server">South America</asp:LinkButton></li> 
    <li id="asia"><asp:LinkButton ID="lbAsia" OnCommand="ChooseRegion" CommandName="SetCookie" CommandArgument="Asia" runat="server">Asia</asp:LinkButton></li> 
    <li id="australia"><asp:LinkButton ID="Australia" OnCommand="ChooseRegion" CommandName="SetCookie" CommandArgument="Australia" runat="server">Australia</asp:LinkButton></li> 
    <li id="africa"><asp:LinkButton ID="lbAfrica" OnCommand="ChooseRegion" CommandName="SetCookie" CommandArgument="Africa" runat="server">Africa</asp:LinkButton></li> 
    <li id="europe"><asp:LinkButton ID="lbEurope" OnCommand="ChooseRegion" CommandName="SetCookie" CommandArgument="Europe" runat="server">Europe</asp:LinkButton></li> 
</ul> 

、ユーザーコントロールがAutoEventWireup="true"を持っています。分離コードで

は、私はこれ持っている:私はリンクボタンをクリックしたとき、私の本番環境(Windows Server 2008の)で

protected void ChooseRegion(object sender, CommandEventArgs e) 
    { 
     Response.Cookies["region"].Value = e.CommandArgument.ToString(); 
     Response.Cookies["region"].Expires = DateTime.Now.AddDays(90); 
     SendToRegion(e.CommandArgument.ToString()); 
    } 

を、ChooseRegion()は呼ば取得されていないため、クッキーがセットされていません。私は理由を理解することができません。私はOnInitのコマンドハンドラを手動で設定しようとしましたが、OnCommandの代わりにOnClickを使用しようとしました。私はLinkButtonsEnableViewState="true"を設定しようとしました。これまでに試したことはありませんでした。

しかし、これは私の開発マシン(Windows 7)で正常に動作します。

この時点で、これを引き起こしている2つの環境の設定には多少の違いがあるとはかなり確信していますが、どこから探し始めるのかは分かりません。アイデア?

編集 - 2011年10月26日:

OK - 私は私が他の場所でもこの問題を抱えている発見しました。上記のコードのサイトと私が問題を抱えている他のサイトは、両方とも同じSitecoreインスタンスを共有するSitecoreソリューションです。

他のサイトには、電子メールアドレスのテキストボックスと、関連するImageButtonとOnClickイベントがあります。これは、サイト内のすべてのページに含まれているコントロール内のすべてです。ホームページでは、OnClickハンドラは決して起動しません。他のページでは、OnClickハンドラが起動しません。

上記の私のポストの元の部分のコードは、サイトのホームページにもあります。他のページに移動すると、期待どおりに動作します。

また、自分の投稿の元の部分のコードと同様に、開発マシン(Windows 7)では正常に動作しますが、運用マシン(Windows 2008 Server)では正常に動作しません。だから、これはホームページに載っていることと関係しているようで、おそらくSitecoreはこの問題に何らかの形で関わっていると思われます。私はまだ頭を傷つけています...

+0

問題のコードをすべて投稿したのですか、それとも減らしましたか?減らしても、このコードが問題を再現していることを確認しましたか? GET/POST要求が生成されているかどうかを確認するには、FireBug> Consoleウィンドウを試してください。 –

+0

これは本質的に私が持っているコードです。 ChooseRegion()は自分のコードとまったく同じで、HTML/ASP.NETのフロントサイドコードにはそれほど多くはありません。私はチェックして、私は期待していたPOST要求を見ている。 –

答えて

2

アハ:あなたのような何かを背後

<asp:LinkButton ID="lbAsia" OnClick="LinkButton_Click" OnCommand="ChooseRegion" CommandName="SetCookie" CommandArgument="Asia" runat="server">Asia</asp:LinkButton> 

とコードで!私が上に追加した少しの情報を考えた後、私の開発環境と本番マシンの違いは、本番マシンにISAPI_Rewriteがインストールされていることと、私が書いた書き換えルールのスープです持っている。

/default.aspxへのリクエストを/ ...に書き換えます。そのため、LinkBut​​tonをクリックすると、サーバーはPOSTリクエストを傍受し、/に301リダイレクトを発行し、ブラウザで/リクエストをGET - POSTペイロードはASP.NETコードには適用されませんでした。

問題のルールにRewriteCond METHOD GETを追加すると問題が解決しました。

今私は再び私の髪が成長することができます!

1

エラーをテキストファイルに送信するエラーログ機能を追加しないでください。 次に、使用しているコードがサーバー上でエラーをスローするかどうかを手動で確認できますか?あなたのコードで目に見える間違いは見当たりませんが、いくつかの経験があるかもしれません。しかし、私はこれらの時間のような時間のエラーを記録する方法を使用します..

+0

ありがとう - それは良い提案です。私はそれを試して、この時点で珍しい何かが記録されているのを見ていない。 –

1

すべてのリンクボタンにはハンドラクリック時のために、以下のよう:

protected void LinkButton_Click(Object sender, EventArgs e) 
    { 
    string commandArgument = (sender as LinkButton).CommandArgument; 
    string commandName =(sender as LinkButton).CommandName; 

    if(commandName == "something") 
    { 
     //Do something 
     //and so on 
    } 
    } 
+0

上記のようにコードを変更しようとしました。 LinkBut​​ton_Click関数が呼び出されることはありませんが、結果のコードはまだ動作していません。 –

+1

また、私はちょっと混乱しています。私はOnCommand + CommandName + CommandArgumentをOnClickハンドラなしでいくつかのインスタンスで使用していましたが、問題なく、OnCommandで指定された関数が呼び出されます。私はそれがどうやってやろうとしていたのだろうと思っていましたが、それはOnClickと一緒に働くことになっていますか? –

関連する問題