2011-09-13 16 views
2

Request.QueryString["u"]の値を2番目のパラメータとして下のURLに挿入したいと思います。したがって、URLはItem.aspx?id = 1 & u = 2となります。しかし、NavigateUrlの値フィールド内で2つのサーバーサイドタグを動作させることはできません。URLに2つの値を挿入

私はエラーがこのようにそれをやってしまった
<asp:HyperLink runat="server" 
       NavigateUrl='<%# Eval("itemID", "Item.aspx?id={0}") %>' /> 

:あなたはあなたの中にエラーが発生します

NavigateUrl='<%# String.Format(
        "Item.aspx?id={0}{1}", 
        Eval("itemID"), 
        Request.QueryString["u"] == null 
        ? String.Empty 
        : String.Concat("&u=", Request.QueryString["u"].ToString())); %>' 

答えて

3

今それをチェックすることはできませんので、構文の確認は、次のようにではない試してみてください複数の<%# %>式を1つのプロパティ内で連結することができないためです。

すなわちは、構文は常に次のとおりです。<tag property='<%# expression %>' />

このような発現のための例は、SLLの答えに記載されています。彼の答えに質問を追加したので、私は恥知らずに答えを盗み、必要な機能を追加します:

私は忘れました。ときにはRequest.QueryString ["u"]がnullである可能性があり、nullのときにURLに& u =を入れたくない場合もあります。 <%#&%> - タグの外側の変数に移動しようとしましたが、タグ内に変数が見つかりませんでした。その場合

、(三?:オペレータとの)条件を使用します。

NavigateUrl='<%# "Item.aspx?id=" + Eval("itemID") + 
       (Request.QueryString["u"] != null 
        ? "&u=" + Request.QueryString["u"] : "") %>' 

QueryString["u"]はすでに文字列を返しますので、あなたは、ToStringを必要としません。私は忘れてしまった

NavigateUrl='<%# "Item.aspx?id=" + Eval("itemID") + 
       (Request.QueryString["u"] != null 
        ? "&u=" + Server.UrlEncode(Request.QueryString["u"]) 
        : "") %>' 
+0

:あなたは何をすべき文字列が&または他の特殊文字が含まれているかもしれないので、しかし、あなたのURLを「壊す」ことを、テキストを正確に符号化することです。ときどき 'Request.QueryString [" u "]'はnullかもしれませんし、nullのときにはURLに*とu = *を入れたくないこともあります。 '<%# &%>' -tagsの外側の変数に移動しようとしましたが、変数はタグの中に見つかりませんでした。 – Niklas

+0

@Niklas:更新されたスニペットを参照してください。この新しい詳細で元の質問を更新することもあります。 – sll

+0

ありがとうございました!私はここで読みやすくするつもりはない)= – Niklas

0

<asp:HyperLink runat="server" 
       NavigateUrl='<%# Eval("itemID", "Item.aspx?id={0}") %> 
       <%= "&u="+Request.QueryString["u"].ToString() %>' 
/> 
関連する問題