строковое выражение для значения тега html - PullRequest
0 голосов
/ 28 октября 2011

Я определяю источник данных (для сортируемого списка) и имею небольшую загвоздку.

Код, аналогичный этому произведению:

<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 и как я его называю. Как правильно делать то, что я пытаюсь сделать?

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Вы, похоже, пытаетесь трактовать ASPX, как будто это C #. Если вы добавили маркеры <%%>, вы сможете использовать синтаксис C #:

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

Вы можете столкнуться с проблемами, используя кавычки «кавычки внутри», кавычки внутри », поэтому вам может понадобиться ответ Андрея.

1 голос
/ 28 октября 2011

Вы можете установить этот атрибут в некотором обработчике событий страницы (в зависимости от того, что лучше подходит для вашего рабочего процесса). Например, в 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
}
...