当前位置:  开发笔记 > 编程语言 > 正文

如何在ASP.Net中为搜索表单执行<form method ="get">?

如何解决《如何在ASP.Net中为搜索表单执行<formmethod="get">?》经验,为你挑选了2个好方法。

我在我正在开发的应用程序中有一个搜索表单,我希望它相当于method="GET".

因此,当点击搜索按钮时,用户前往 search.aspx?q=the+query+he+entered

我想要这个的原因只是可以添加书签的URL,而且这样做会感觉更干净.

我也不希望将viewstate隐藏字段值附加到URL.

我能想到的最好的是:

    捕获按钮的服务器端单击事件和Response.Redirect.

    将Javascript onclick处理程序附加到触发的按钮window.location.replace.

两者都感到古怪和次优......你能想到一个更好的方法吗?



1> seanb..:

使用普通的旧HTML表单,而不是服务器端表单(runat = server),你应该确实能够使它工作.

但是,如果您有一个开箱即用的visual studio母版页,它以服务器端形式包装整个页面,那么这可能会成为一个问题,因为您无法嵌套表单.

Web表单不必吮吸,但默认实现通常会这样做.您不必为所有内容使用Web表单.有时,普通的旧帖子/获取和处理请求代码就可以了.


我希望有人告诉人们建立我刚刚开始的项目,而不是以包含母版页的默认形式离开..可怕的.

2> Solburn..:

我在一个网站上工作,必须发布到第三方网站,在客户的网站上进行搜索.我最终做了一个简单的Response.Redirect并通过查询字符串传递搜索参数,如下所示:

protected void Button1_Click(object sender, EventArgs e)
{
    string SearchQueryStringParameters = @"?SearchParameters=";
    string SearchURL = "Search.aspx" + SearchQueryStringParameters;

    Response.Redirect(SearchURL);
}

在您的pageload中的Search.aspx页面上...

protected void Page_Load(object sender, EventArgs e)
{
    if (!string.IsNullOrEmpty(Request.QueryString["SearchParameters"]))
    {
        // prefill your search textbox
        this.txtSearch.Text = Request.QueryString["SearchParameters"];

        // run your code that does a search and fill your repeater/datagrid/whatever here
    }
    else
    {
        // do nothing but show the search page
    }
}

希望这可以帮助.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有