标题可能不够具体,但我在这里问,因为我不知道如何搜索我的问题或对其进行简短描述。
我的问题是,我有几个同一个班级但不同ID的div,当点击其中一个时,页面网址从" url" to" url?page = one",它通过Request [" page"]更改内容,内容来自一个数组,其中我只显示符合请求的数组。
我想做的事情是"访问"与请求["页面"]具有相同ID的div。但我不知道该怎么做。
我认为它会是这样的:
if(div.id == Request["page"]){ do this }
这就是我正在寻找的解决方案(如果可能的话),只是一个有效的解决方案。
我希望有人能够提供帮助。
我可能会用很多笨拙的代码获得相同的结果,但我想学习并制作更好的代码。
答案 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";
}