簡體   English   中英

html標記值的字符串表達式

[英]string expression for html tag value

我正在定義一個數據源(用於可排序的列表視圖)並且有一個小問題。

與此類似的代碼:

<asp:SqlDataSource ID="myDataSource" runat="server"
  SelectCommand="SELECT [aField], [bField]  FROM Suggestions WHERE stype = 'X'"
  ConnectionString="<%$ ConnectionStrings:dbConnectionString %>" >
</asp:SqlDataSource>

但真正的選擇字符串要復雜得多,我想做這樣的事情:

<asp:SqlDataSource ID="myDataSource" runat="server"
  SelectCommand="SELECT [aField], [bField]  " +
                     "FROM Suggestions WHERE stype = 'X'"
  ConnectionString="<%$ ConnectionStrings:dbConnectionString %>" >
</asp:SqlDataSource>

我搜索了術語的不同變體:concatentation catenation string tag html asp.net

但我找不到任何關於它的東西,雖然看起來它需要字符串文字而不是字符串表達式。 所以我最終將這整個復雜的函數定義為數據庫中的一個函數,但是現在我想嘗試類似的東西:

<asp:SqlDataSource ID="myDataSource" runat="server"
  SelectCommand="<% qry_str('X'); %>"
  ConnectionString="<%$ ConnectionStrings:dbConnectionString %>" >
</asp:SqlDataSource>

其中qry_str()在代碼后面定義; 但是,該特定代碼不起作用:

代碼隱藏定義為:

protected string qry_str(string t)
{
    string s =
    "SELECT [aField], [bField]  " +
             "FROM Suggestions WHERE stype = '" + t + "'";
    return "s";
}

我不認為背后的代碼是問題所在。 我認為這是asp.net和我稱之為的方式。 做我正在做的事情的正確方法是什么?

您可以在某個頁面事件處理程序中設置此屬性(更適合您的工作流程)。 例如,在Page_Load中:

protected void Page_Load(object sender, EventArgs e)
{
    string t = "X"; // calculate t here
    myDataSource.SelectCommand = "SELECT [aField], [bField] FROM Suggestions WHERE stype = " + t;
    // other actions
}

您似乎試圖將ASPX視為C#。 如果添加了<%%>標記,則應該能夠使用C#連接語法:

<asp:SqlDataSource ID="myDataSource" runat="server" 
                   SelectCommand='<% ="SELECT [aField], [bField] " +
                                      "  FROM suggestions        " +
                                      " WHERE sType='X'          " %>' 
                   ConnectionString="<%$ ConnectionStrings:dbConnectionString %>" > 
</asp:SqlDataSource> 

使用“引號內”引號內的引號可能會遇到麻煩 - 所以你可能最終不得不接受安德烈的回答。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM