ASP.net webforms参数在url中

Rad*_*u D 2 asp.net webforms

我有一个asp.net页面,其中包含一个搜索页面的表单.

有没有解决方案,以便我可以在网址中找到搜索文本?

我想让我的客户能够复制/粘贴搜索结果网址.

bla*_*bla 8

可能有其他更好/更清洁/正确的方法,例如更改表单的操作,或更改按钮的PostBackUrl,但这就是我要做的.

  1. 重定向到self,搜索词附加到查询字符串.
  2. 在页面加载时,如果查询字符串不为空,请执行搜索.

的.aspx:

<asp:Label ID="Label1" runat="server" Text="Search Term:&nbsp;"></asp:Label>
<asp:TextBox ID="txtSearchTerm" runat="server"></asp:TextBox>
<asp:Button ID="btnSearch" runat="server" Text="Search" 
    onclick="btnSearch_Click" />
Run Code Online (Sandbox Code Playgroud)

的.cs:

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
        return;

    if (!string.IsNullOrEmpty(Request.QueryString["SearchTerm"]))
    {
        string searchTerm = Request.QueryString["SearchTerm"];
        txtSearchTerm.Text = searchTerm;
        DoSearch(searchTerm);
    }
}
protected void btnSearch_Click(object sender, EventArgs e)
{
    if (!string.IsNullOrEmpty(txtSearchTerm.Text.Trim()))
    {
        Response.Redirect("~/Search.aspx?SearchTerm=" + txtSearchTerm.Text.Trim());
    }
}

private void DoSearch(string searchTerm)
{
    //search logic here
    Response.Write("Search result: " + searchTerm);
}
Run Code Online (Sandbox Code Playgroud)

  • 六年后,这篇文章解决了我的问题!:) (3认同)

Rad*_*u D 1

经过对这个主题的更多研究,我认为 javascript 解决方案是最好的:

您可以使用 JavaScript 访问表单的 ACTION 属性。

<form id="myForm" action="Search.aspx" onsubmit="return setAction();">
    <input id="textbox" />
    <input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
<script type="text/javascript">

function setAction()
{
    var myForm = document.getElementById( "myForm" );
    var myText = document.getElementById( "textbox" );

    if (myForm && myForm.action && myText && myText.value != null )
    {
       myForm.action = "Search.aspx?q=" + myText.value;
    }
    return true;
}

</script>
Run Code Online (Sandbox Code Playgroud)

就我个人而言,我并不是 JavaScript 的忠实粉丝……但这不会向服务器添加额外的请求。如果您认为这有任何缺点,请告诉我。