【问题标题】:Odd issue with textbox and ASP.NET文本框和 ASP.NET 的奇怪问题
【发布时间】:2008-10-30 20:55:01
【问题描述】:

这段代码之前运行正常,基本上我有一个母版页,它有一个用于搜索的文本框,我将其命名为 searchBox。我有一种方法可以在表单提交时提取 searchBox 的内容并将其设置为变量 userQuery。方法如下:

Public Function searchString(ByVal oTextBoxName As String) As String
    If Master IsNot Nothing Then
        Dim txtBoxSrc As New TextBox
        txtBoxSrc = CType(Master.FindControl(oTextBoxName), TextBox)
        If txtBoxSrc IsNot Nothing Then
            Return txtBoxSrc.Text
        End If
    End If
    Return Nothing
End Function

结果显示在 search.aspx 上。但是,现在如果searchBox填写并提交到search.aspx以外的页面,文本框的内容不会通过。表格很简单,就是:

<asp:TextBox ID="searchBox" runat="server"></asp:TextBox>
<asp:Button ID="searchbutton" runat="server" Text="search" UseSubmitBehavior="True" PostBackUrl="~/search.aspx" CssClass="searchBtn" />
.

【问题讨论】:

    标签: asp.net search post


    【解决方案1】:

    我认为因为您使用的是 PostBackUrl,所以您将需要使用“PreviousPage”标识符来引用您的变量。

    另一种解决方案是不使用 PostBackUrl 属性并在用户控件中捕获事件(我假设您将其封装在一个位置),然后使用:

    Response.Redirect("/search.aspx?sQuery=" & Server.URLEncode(searchBox.Text)) 
    

    由于您不一定要传递敏感数据,因此这也应该是可以接受的。

    【讨论】:

    • 如果您决定执行上述操作,出于对所有神圣事物的爱,请确保您在将其推到之前正确清理了该 sQuery 变量(或使用参数化查询)你的数据库。
    • 同意。好点子。拥有能够正确清理参数的数据访问层至关重要。无论是否通过 QueryString 发送,都应该是这种情况。
    • 我对所有 SQL 事务使用参数化查询,但是搜索功能是否需要清理?
    【解决方案2】:

    我同意 Kyle 关于为什么它不起作用以及如果您想继续通过文本控件访问该值的解决方案,但您也可以从 httprequest 中提取表单数据。我是这样想的(我的asp.net有点生疏)

    Request.Form[txtBoxSrc.UniqueID]
    

    此处记录了此以及其他技术(使用 previouspage 属性):http://msdn.microsoft.com/en-us/library/6c3yckfw(VS.80).aspx。看来您需要做的就是:

    if (Page.PreviousPage != null)
    {
        TextBox SourceTextBox = 
            (TextBox)Page.PreviousPage.FindControl("TextBox1");
        if (SourceTextBox != null)
        {
           return SourceTextBox.Text;
        }
    }
    

    更新:感谢 Jason Kealey 指出我需要使用 UniqueID。

    【讨论】:

    • 我猜 ID 会更复杂,因为它可能包含在用户控件等中。
    • 对!您必须从控件中获取 id
    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 2011-02-24
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    相关资源
    最近更新 更多