我有一个搜索形式在应用目前,我正在发展,我希望它是相当于 method="GET".

因此,当击的搜索,用户去 search.aspx?q=the+query+he+entered

我想这只是书签网址,再加上感觉更清洁的做法。

我也不想的视图状态隐藏的场价值所附的URL。

最好我可以想出这是:

  1. 捕获的服务器侧击事件的按钮, Response.Redirect.
  2. 附上一Javascript onclick 处理程序的按钮发射 window.location.replace.

都觉得古怪和最佳的子...你能想到一个更好的办法?

有帮助吗?

解决方案

利用一个普通的老html形式,不是一个服务器上面的形式(目前=服务器),并且你的确应该能够使它的工作。

这可能是一个问题,如果你有开箱visual studio主页上,它环绕整个页面中的一个服务器侧形式,因为你不能巢的形式。

网络的形式没有吸,但是默认的实现往往做。你不需要使用网络形式的一切。有时候简单的老职位/获得和过程的请求码会做的只是罚款。

其他提示

我曾在一个网站,该网站已张贴到一个第3方网站做上的搜索客户的网站。我做了一个简单的反应。重定向,并通过在搜索参数通过查询串像这样:

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

    Response.Redirect(SearchURL);
}

和你的搜索。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
    }
}

希望这会有所帮助。

该功能允许提交一页的使用获得的方法。

要提交一页的使用的方法获得,你需要:

  1. 加入这个代码 形式。Method="get"; 在Page_Load方法
  2. 使用这个代码 < asp:按钮运="服务器"ID="btnGenerate"/> 作为一个提交按钮
  3. 添加 rel="不提交" 属性的所有形式的元素,你不希望包括在查询字符串
  4. 改变的代码隐藏逻辑的网页使用 请求。查询
  5. 禁止页视图状态与 EnableViewState="虚假" (除非是用于其他目的)

代码

$(document).ready(function(){ enableSubmitFormByGet(); });

function enableSubmitFormByGet(){
   if($("form").attr("method") == "get"){
        $("form").submit(function() {
            $("[name^=" + "ctl00" + "]").each(function(i){
            var myName = $(this).attr("name");
            var newName = "p" + (i-1);
            $(this).attr("name", newName);
        });
     var qs =$(this).find("input[rel!='do-not-submit'],textarea[rel!='do-not-submit'],select[rel!='do-not-submit'],hidden[rel!='do-not-submit']").not("#__VIEWSTATE,#__EVENTVALIDATION,#__EVENTTARGET,#__EVENTARGUMENT").serialize();
     window.document.location.href = "?" + qs;
     return false;
});

我会做(b)由于(a)需要进行两次往返于一个单一的查询。或者,可以禁用视图状态的网页,删除任何其他隐藏的领域通过javascript,并且还使用javascript修改的形式方法从后得到的。我从来没有这样做真实的,但是我的玩具页使用包括样品的工作就像一个特色。它可以说是比更容易编码检索字符串做的,获得通过javascript。

实际上,这听起来像是你会快乐的ASP.NET 视,因为这是很容易可行有通过简单地设定的形式方法,以获得在图。

样本代码使用jquery

 $(document).ready( function() {
     $('input[type=hidden]').remove();
     $('form').attr('method','get');
 });

编辑: 似乎你们应该能够做同样的事情server-side,也是。也许在OnPreRenderComplete.没有访问Visual Studio现在以检查。

我一直用的响应。重定向,因为它"作品"。

我不认为这是一个最佳方法。

只是用这个在你的.点击事件之前的形式提交:

    $("#__VIEWSTATE").remove();
    $("#__EVENTVALIDATION").remove();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top