根据Request []更改div类

时间:2015-02-06 10:00:07

标签: c# asp.net

标题可能不够具体,但我在这里问,因为我不知道如何搜索我的问题或对其进行简短描述。

我的问题是,我有几个同一个班级但不同ID的div,当点击其中一个时,页面网址从" url" to" url?page = one",它通过Request [" page"]更改内容,内容来自一个数组,其中我只显示符​​合请求的数组。

我想做的事情是"访问"与请求["页面"]具有相同ID的div。但我不知道该怎么做。

我认为它会是这样的:

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

这就是我正在寻找的解决方案(如果可能的话),只是一个有效的解决方案。

我希望有人能够提供帮助。

我可能会用很多笨拙的代码获得相同的结果,但我想学习并制作更好的代码。

1 个答案:

答案 0 :(得分:1)

首先,您需要使用<asp:Panel属性将Div更改为runat="server",以便您可以在代码隐藏中与其进行交互。这些将被渲染为Divs;

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

将呈现为(Id可能以不同的方式呈现,但这是另一个故事):

 <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";   
}