web-dev-qa-db-ja.com

Eval()でNavigateUrlを使用したHyperLink。間違いはどこですか?

最初に、Page_Load()のコードビハインドで_HyperLink.NavigateUrl_を変更していました。

しかし、Eval()メソッドを使用して設計で行うことにした後。

_<asp:HyperLink runat="server"
     NavigateUrl='<%# String.Format("~/Refuse.aspx?type={0}&id={1}", Eval("type"), Eval("id")) %>' Text="Refuse" />
_

または

_<asp:HyperLink ID="urlRefuse" runat="server"
     NavigateUrl='<%# String.Format("~/Refuse.aspx?type={0}&id={1}", Request["type"], Request["id"]) %>' Text="Refuse" />
_

ここで、idtype-はRequestの変数です。

しかし、それは機能しません。生のテキスト「拒否」のみが表示されます。私の間違いはどこですか?前もって感謝します。

22
abatishchev

これはうまく機能しています

NavigateUrl='<%# Eval("type","~/Refuse.aspx?type={0}") %>'
57
Hamdy Mohamed

これは私のために働いた

NavigateUrl='<%# String.Format("{0}.aspx?ID={1}", DataBinder.Eval(Container.DataItem, "Category"), DataBinder.Eval(Container.DataItem, "Post_ID")) %>'
15
Etienne

あなたのブラウザでViewSourceを試してみてください、あなたのhrefでクライアントに何がレンダリングされていますか?それはあなたが期待したものですか? Evalを使用できないリクエストコレクションの変数を使用する場合は、Requestクエリ文字列パラメーターを使用する必要があります。

<asp:HyperLink runat="server"
     NavigateUrl='<%# String.Format("~/Refuse.aspx?type={0}&id={1}", Request["type"], Request["id"]) %>' Text="Refuse" />
4
Phaedrus