PostBackUrl帶參數

摘要:PostBackUrl帶參數

假設我們有一個搜尋的Button,他的作用是將頁面上搜尋的條件傳到另一個頁面,如下所示:
 

<asp:TextBox ID="txtKeyword" runat="server" ValidationGroup="ValidateSearch"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*" Display="Dynamic" ValidationGroup="ValidateSearch"ControlToValidate="txtKeyword"></asp:RequiredFieldValidator>                  
<asp:Button ID="btnSearch" runat="server" Text="搜尋" PostBackUrl="SearchResult.aspx" />

 但現在出現了一個問題,就是我PostBackUrl後面的網址想帶參數,可以透過下面的方式達成:

1.先將PostBackUrl屬性移除

<asp:Button ID="btnSearch" runat="server" Text="搜尋" ValidationGroup="ValidateSearch" />

2.在PreReader撰寫程式

 

 

 protected override void OnPreRender(EventArgs e)
    {
        //讓button產生PostBackUrl
        string main_id = ((Web_AP_MasterPage)this.Master)._GetMain_Id;
        string CateID = ((Web_AP_MasterPage)this.Master)._GetCate_Id;
        string Tree_Type = ((Web_AP_MasterPage)this.Master)._Tree_Type;

        PostBackOptions myPostBackOptions = new PostBackOptions(this);
        myPostBackOptions.ActionUrl = "SearchResult.aspx?tp=" + Tree_Type + "&main_id=" + main_id + "&cateid=" + CateID + "";      
        //是否產生Client端指令碼
        myPostBackOptions.RequiresJavaScriptProtocol = true;
        //client是否需要驗證
        myPostBackOptions.PerformValidation = false; 
        btnSearch.PostBackUrl = Page.ClientScript.GetPostBackEventReference(myPostBackOptions);
   
    }