HTML标记值的字符串表达式

本文关键字:字符串 表达式 HTML | 更新日期: 2023-09-27 18:12:54

我正在定义一个数据源(用于可排序的listview),并且有一个小问题。

类似的代码:

<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>

我搜索了这些术语的不同变体: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,或者我叫它的方式。做我想做的事情的正确方法是什么?

HTML标记值的字符串表达式

您可以在某些页面事件处理程序中设置此属性(哪个更适合您的工作流)。例如,在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> 

你可能会遇到麻烦,使用'引号内'引号内'引号-所以你可能最终不得不使用Andrei的答案。