2011-07-08 39 views

回答

0

你可以通過查詢字符串值作爲像ascx控件的屬性:

<cc:myControl id="myControl" runat="server" myValue='<%=request.querystring("id")' /> 

然後在後面的代碼自定義控制,添加在你的類如下:

Public myValue as String 
2

您可以從UserControl的代碼隱藏中訪問Request.QueryString集合。

3

在你aspx頁面,在你ascx用戶控件,在你的母版頁,在自定義控件和幾乎無處不在,你可以訪問查詢字符串。使用以下方法之一:

  1. 訪問直接通過Page.Request.QueryString
  2. 查詢字符串就在您的用戶控件中的用戶控件在頁面中創建一個屬性,那麼,投你的用戶控制,以得到一個參考財產並設置該財產。然後在您的用戶控件中使用該屬性。
  3. Anywhere的ASP.NET環境中,通過HttpContext.Current.Request
6

通常,如果事情是在用戶控件,這可能是因爲在控制的功能足以顯著被打破可以訪問請求(包括查詢字符串)進入它自己的可重用容器,可以在其他頁面上重用。如果控制實際上是曾經打算在另一頁上被重用,但真的不應該引用查詢字符串參數,因爲控制應使任何假設什麼頁它是。如果該控件包含在查詢字符串參數命名不同的另一個頁面中,該怎麼辦?或者,也許在另一個頁面的值將來自數據庫或ViewState或將自動確定?所以我的一般規則是,如果你打算做一個UserControl,永遠不要對它所在的頁面做任何假設。

所以大多數人一樣說,你仍然可以從用戶控件內訪問的Request.QueryString屬性,但是這可能不是最好的主意。在由容器頁面設置的控件上創建一個屬性是一個好得多的想法。

在我看來,什麼我幾乎總是做最好的辦法,就是創建方法稱爲LoadData(或類似的東西)的控制,與所有你需要的查詢字符串值的參數。這樣你就有了一個單一的數據入口點,所以很清楚這些值是在什麼位置設置的,以及它們設置的是什麼。如果你去物業路線,總有關於是否所有的性能得到了設定的關注,以及他們是否在頁面生命週期中的正確位置得到設定(可以回傳時變得棘手)

相關問題