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,或者我叫它的方式。做我想做的事情的正确方法是什么?
您可以在某些页面事件处理程序中设置此属性(哪个更适合您的工作流)。例如,在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的答案。