asp.net - register - mvc oauth facebook




我怎樣才能在ASP.Net的搜索表單<form method=“get”>? (4)

(b)因為(a)需要兩次往返查詢。 或者,您可以禁用頁面上的viewstate,通過javascript刪除任何其他隱藏的字段,也可以使用javascript來修改表單方法從post到get。 我從來沒有這樣做過,但我的玩具頁面使用包含的樣品就像一個魅力。 這是比編碼搜索字符串,並通過JavaScript獲取更容易。

實際上,聽起來你會對ASP.NET MVC感到高興,因為通過在視圖中簡單地將窗體方法設置為GET,這很容易實現。

示例代碼使用jQuery

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

編輯:這似乎你應該能夠做同樣的事情服務器端,也一樣。 也許在OnPreRenderComplete中。 目前無法訪問Visual Studio進行檢查。

我正在開發一個應用程序中的搜索表單,我希望它是method="GET"的等價物。

因此,當點擊搜索按鈕時,用戶去search.aspx?q=the+query+he+entered

我想要這個的原因只是可收藏的URL,再加上這樣做的感覺更乾淨。

我也不希望視圖狀態的隱藏字段值附加到URL。

我能想到的最好的是:

  1. 捕獲按鈕和Response.Redirect的服務器端單擊事件。
  2. 將一個Javascript onclick處理程序附加到觸發window.location.replace的按鈕上。

都覺得古怪和次優...你能想到一個更好的方法?


使用一個普通的舊的HTML表單,而不是一個服務器端的形式(runat =服務器),你應該能夠使其工作。

如果你有一個開箱即用的Visual Studio母版頁,它將整個頁麵包裝在一個服務器端的表單中,這可能是一個問題,因為你不能嵌套表單。

Web表單不必吮吸,但默認的實現往往這樣做。 你不必使用網頁形式的一切。 有時,簡單的舊的post / get和處理請求代碼將會很好。


我在一個網站上工作,必鬚髮佈到第三方網站,在客戶的網站上進行搜索。 我最終做了一個簡單的Response.Redirect並通過查詢字符串傳遞搜索參數,如下所示:

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

    Response.Redirect(SearchURL);
}

並在您的頁面載入您的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
    }
}

希望這可以幫助。


這個函數允許使用GET方法提交一個頁面。

要使用get方法提交頁面,您需要:

  1. 添加此代碼Form.Method =“get”; 在Page_Load方法中
  2. 使用此代碼<asp:Button runat =“server”ID =“btnGenerate”/>作為提交按鈕
  3. rel =“do-not-submit”屬性添加到您不希望包含在查詢字符串中的所有表單元素
  4. 使用Request.QueryString更改頁面的代碼隱藏邏輯
  5. 使用EnableViewState =“false”禁用頁面視圖狀態(除非用於其他目的)

$(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;
});