2010-11-29 29 views
7

とのhref <%= xx %>に私は以下のようにaspxページ上のアンカータグを使用する場合、それは正しくIDに割り当てられた変数の値を取得しますが、それはルートではないでしょう、にrunat =サーバー

​​

をサーバー変数を使用してページは〜のように正しく評価されず、'a 'タグのrunat = "server"属性なしで評価されます。しかし、私はrunatサーバーの属性を追加すると、それはもうservervariableの名前を評価しません..どのようにこれは動作するか、私は両方の世話をする必要があります知っている?

+0

OK、それは[..私は再びそれを追加してみましょう...のhref「〜/ページ/ page.aspxを私タグセクションを取りましたか?いくつかの<を[ – user479843

+0

と置き換えただけです。コードを4つのスペースでインデントしてフォーマットする必要があります。 – SLaks

答えて

11

は、以下のことを試してみてください。

href="<%= ResolveUrl("~/pages/page.aspx") + "?id=" + ServervariableName %>" 

あなたがrunat="server"を追加しない場合にのみ動作します。

+1

あなたはmapPathの解決策isnteadを望んでいると思います。 – Letseatlunch

+1

@Letseatlunch - ありがとう。答えを更新しました。正直言って:私はasp.netを開発してから数年が経ちました。私は答えをしようと思った。私は私が思う 'asp.net'タグに留まります:D。 –

+0

はい、resolveurl関数について忘れました。本当にありがとう、それは働いて、まさに私が探していたものです。動的に値を渡す必要のあるメニュー項目です。 – user479843

2

この構文を使用して、サーバー側のコントロールのプロパティを設定することはできません。

コードビハインドでプロパティを設定するか、データバインディング構文(<%# expression %>)を使用して、コードビハインドでDataBind()を呼び出すことができます。

2

あなたはにrunat =サーバーとのあなたのいずれかの仮想パスの両方たい場合:

  1. が背後にあるあなたのコードのhrefを設定します。 Afaik MapPathはクエリ文字列を削除しません。
  2. MapPathを使用しない場合は、VirtualPathUtilityを使用できます。これは、MapPathが内部的に使用する可能性が最も高いものです。
  3. 変数を.aspxファイルにバインドしてもrunat = "server"にしたい場合は、an expression builderを使用する必要があります。あなたは、その後になっ構文

    <

    のhref = "〜/フォルダ/ page.aspx ID = <%の$のMyVars:?ServerVariableName%>" にrunat = "サーバー" >リンク</>

私に助けが必要な場合は私に私を教えてください。これは、ローカリゼーションをカスタマイズするための非常に便利だとrunat="server"<%= Property =>の評価を妨げる理由ASP.Netコンパイラ(すなわちないC#/ VB 1が、ASPX-ページをコンパイルすることができます1)

+0

表現ビルダーはわかりませんでした約。知らせてくれてありがとうございます。ページ変数を宣言して式に変換する簡単な方法はありますか? – user479843

+0

"ページ変数"とはどういう意味ですか?ページがコンパイルされるクラスの保護されたフィールド?実際には、式ビルダーはASP.Netのコンパイル時にCodeDomによって呼び出され、実装によって任意のコードを生成できます。私はMyVars式ビルダーがフィールドにアクセスするためのコードを出すようにすることはできますが、まだ行っていません。 – Henrik

-2

をインタフェースするために、私は正確にはわかりません、しかし、あなたは〜ルートを評価するために、「runat="serverを必要とする。MSDN

によると、あなたは、サーバー内の任意の パス関連のプロパティで〜演算子 コントロールを使用することができます。〜演算子は唯一のサーバーコントロールのための を認識されていますサーバーの コード。〜演算子は使用できませんクライアント要素の場合はです。

とにかく、これはあなたに行くかもしれません。

ASPX

<asp:HyperLink ID="myHyperLink" runat="server" NavigateUrl="~/MyPage.aspx?id=<%=MyProperty %>" Text="Click Me" /> 

CS

myHyperLink.NavigateUrl = string.Format("~/MyPage.aspx?id={0}", MyProperty); 
+0

はい、私はハイパーリンクを使いたくありませんでした。 "resolveurl"機能がこのトリックを行いました。 – user479843

+0

ええ、投稿した直後にそれを見ました=)うれしいですよ! – bitxwise

+0

この解決方法は機能しません。サーバータグは解釈されません。 –

関連する問題