ASP.net webforms参数在url中

时间:2010-10-27 14:12:23

标签: asp.net webforms

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

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

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

4 个答案:

答案 0 :(得分:6)

可能还有其他更好/更清洁/更合适的方法,例如更改form's action或更改按钮的PostBackUrl,但这就是我要做的。

  1. 将搜索字词附加到query string重定向到自己。
  2. 在页面加载时,如果查询字符串不为空,请执行搜索。
  3. <强>的.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" />
    

    <强>的.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);
    }
    

答案 1 :(得分:0)

如果您希望能够复制/粘贴URL,则需要从表单中获取搜索参数并重定向回URL上的搜索参数,然后读取QueryString值以执行搜索。

答案 2 :(得分:0)

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

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

<form id="myForm" action="Search.aspx" onsubmit="return setAction();">
    <input id="textbox" />
    <input type="submit" value="Submit" />
</form>
<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>

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

答案 3 :(得分:0)

你也可以使用jQuery来做这个技巧:

$(function(){

$('input[type="submit"]').click(function(e){
       e.preventDefault();
       var searchResult = "Search.aspx?q=" + $('input#textbox').val();
       $('form#myForm').attr('action',searchResult);
    });
});