Установка параметров SqlDataSource из Request.Form - PullRequest
0 голосов
/ 05 сентября 2011

Я пытаюсь создать простой поиск.У меня есть «txtSearch» textBox и кнопка «поиск» в MasterPage, кнопка имеет PostbackUrl = Search.aspx

В MasterPage

<asp:TextBox ID="txtSearch" runat="server" ValidationGroup="b" Text="Users Search" ForeColor="Silver">Users Search</asp:TextBox>

<asp:Button ID="btnSearch" runat="server" Text="Search" ValidationGroup="b" 
PostBackUrl="~/Search.aspx" onclick="btnSearch_Click" />

В Search.aspx у меня есть GridView, который показывает мне результаты иSqlDataSource

<asp:SqlDataSource ID="SqlDataSearchResult" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 

    SelectCommand="SELECT vw_aspnet_Users.UserId, vw_aspnet_Users.UserName, Custon_UserInfo.UserId AS Expr1, Custon_UserInfo.FirstName, Custon_UserInfo.LastName, Custon_UserInfo.Location, Custon_UserInfo.Avatar, Custon_MoneyWork.UserId AS Expr2, Custon_MoneyWork.Money, vw_aspnet_Users.LastActivityDate FROM vw_aspnet_Users INNER JOIN Custon_UserInfo ON vw_aspnet_Users.UserId = Custon_UserInfo.UserId INNER JOIN Custon_MoneyWork ON vw_aspnet_Users.UserId = Custon_MoneyWork.UserId WHERE (vw_aspnet_Users.UserName LIKE '%' + @UserName + '%')">
    <SelectParameters>
        <asp:FormParameter FormField="txtSearch" Name="UserName" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

В Определить параметры: UserName = Request.Form ("txtSearch"), как это должно быть, но это не работает.Я пытался с сеансом ["search"] = txtSearch.text;и он работает .. Но не с Request.Form ..

UPD Я пытался использовать QueryStringField вместо FormField, и он работает, не знаю, что не так с FormField.

1 Ответ

0 голосов
/ 02 июня 2016

Почему бы не избежать переменных сеанса (мне не нравится идея «глобальной» переменной, которая стоит выше всего остального, и нет способа узнать, была ли она случайно изменена или повреждена, например, из-за плохого кода), и использоватьControlParameter вместо?

т.е.

<SelectParameters>
        <asp:ControlParameter ControlID="txtSearch" Name="UserName" PropertyName="Text" Type="String" />
    </SelectParameters>

Пусть ASP.net сделает большую часть работы за вас.

...