我在我正在开发的应用程序中有一个搜索表单,我希望它相当于method="GET"
.
因此,当点击搜索按钮时,用户前往 search.aspx?q=the+query+he+entered
我想要这个的原因只是可以添加书签的URL,而且这样做会感觉更干净.
我也不希望将viewstate隐藏字段值附加到URL.
我能想到的最好的是:
捕获按钮的服务器端单击事件和Response.Redirect
.
将Javascript onclick
处理程序附加到触发的按钮window.location.replace
.
两者都感到古怪和次优......你能想到一个更好的方法吗?
使用普通的旧HTML表单,而不是服务器端表单(runat = server),你应该确实能够使它工作.
但是,如果您有一个开箱即用的visual studio母版页,它以服务器端形式包装整个页面,那么这可能会成为一个问题,因为您无法嵌套表单.
Web表单不必吮吸,但默认实现通常会这样做.您不必为所有内容使用Web表单.有时,普通的旧帖子/获取和处理请求代码就可以了.
我在一个网站上工作,必须发布到第三方网站,在客户的网站上进行搜索.我最终做了一个简单的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 } }
希望这可以帮助.