2015-02-06 52 views
1

標題可能不夠具體,但我在這裏問,因爲我不知道如何搜索我的問題或對其進行簡短描述。根據請求更改div類[]

我的問題是,我得到了幾個具有相同類但不同ID的div,當點擊其中一個頁面url從「url」更改爲「url?page = one」時,它通過Request [ 「page」],內容來自一個數組,其中我只顯示符​​合請求的數組。

我想做的事情是「訪問」與請求[「頁面」相同的ID的div。但我不知道如何去做。

我認爲這將是這樣的:

  if(div.id == Request["page"]){ do this } 

這就是我正在尋找(如果可能的話),只是一個正在運行的一種解決方案。

我希望有人能夠提供幫助。

我可能會用很多笨拙的代碼獲得相同的結果,但我想學習並製作更好的代碼。

回答

1

首先,您需要將您的Divs更改爲<asp:Panelrunat="server"屬性,以便您可以在代碼隱藏中與它進行交互。這些將被呈現爲Div;

<asp:Panel ID="pageOnePanel" runat="server"> 
    foo 
</asp:Panel> 

將呈現爲(該標識可能呈現不同的但完全是另外一個故事):

<div id="pageOnePanel"> 
    foo 
</div> 

現在你可以處理這個在許多方面,但這裏有兩個,這是比較固定的路線:

Protected void Page_Load(object sender, EventArgs e) 
{ 
    string pageName = Request.QueryString["page"]; //expecting "PageOne" or "PageTwo" 
    switch(pageName) 
    { 
     case("pageOne"): 
      pageOnePanel.CssClass = "myClass"; 
      break; 
     case("pageTwo"): 
      pageTwoPanel.CssClass = "myClass"; 
      break; 
     default: 
      defaultPanel.CssClass = "myClass"; 
      break; 
    } 
} 

這是更有活力,在因爲如果頁面屬性不匹配,你會得到錯誤,這個需要更多的檢查。此代碼是它的最低限度:

Protected void Page_Load(object sender, EventArgs e) 
{ 
    string pageName = Request.QueryString["page"]; //expecting "PageOne" or "PageTwo" 
    Panel myPanel = (Panel)FindControl(pageName + "Panel"); 
    myPanel.CssClass = "myClass"; 
} 
+0

非常感謝!交換機是完美的方式 – Jonasnoerr 2015-02-06 11:02:44