摘要: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);
}