2011-12-29 37 views
0

私はaspxページにいくつかのアンカーを持っています。
クリックした後でpage_loadでそれらを決定する必要があります。
これらのアンカーは通常のasp.netコントロールではありません。クリックするとPage.IsPostBackは常にfalseになります。
何らかの理由でリンクボタンを使用できません。
ですから、クリック後にpage_loadでこれらのアンカーを特定するにはどうすればよいですか?事前にクリック後にpage_loadのHtml Link(アンカー)を認識する方法は?

おかげ

+0

チェッククエリ文字列またはPage.RawUrlを次のようにクリックイベントを処理できる、あなたは私が推測する、そこに#anchorNameをキャッチする必要があります... –

答えて

3

まあ、私の唯一のアイデアは、TUは、URLにパラメータを使用し、クリックされたハイパーリンクを識別するためにそれらを使用しています。

<a href="page.aspx?linkName=link1">Link 1</a> 
<a href="page.aspx?linkName=link2">Link 2</a> 

そして

string linkName = Request.QueryString["linkName"]; 
if (linkName = "link1") 
{ // something 
} 

の背後にあるコードではなく、あなたがLinkButtonsまたはいくつかの他のコントロールを使用することができない理由は何ですか?このアプローチはASP.NETでより便利になります。

+1

+ 1、別のトリックは 'foo'を使用することであり、ブラウザはそれを現在のURLに追加します。 – orip

1

もっとエレガントな方法は、javascriptの__doPostBack関数(既にすべてのasp.netページにあります)を使用して、 イベントの引数とイベントの引数を設定することです。これは、asp.netがサーバーに戻るポストを制御する方法です。

たとえば、サーバー側で

<a id="LinkButton1" href="javascript:__doPostBack('Anchor1','')">LinkButton</a> 

、あなたが

protected void Anchor1_Click(object sender, EventArgs e) 
{ 
    Response.Write("Hello World !"); 
} 
+0

まあまあですが、個人的に私はそのようなソリューションを作るのが好きではありません。私の解決策は良いと言っているわけではありません。最良の方法は、単にアンカーを使用せず、Asp.Netコントロールに固執することです。 – Pako

+0

ASP.Net全体が上記のように動作します。多くのことが開発者から抽象化されています(開発者はそれを知ってはいけません)。 Webにフォームベースのプログラミングを移植することは、これらの種類のハック(__ doPostBack、ViewState)を導入するためにMicrosoftに要求されました。きれいで読みやすいWebベースのプログラミングのためには、MVCが道のりです – Anand

関連する問題