我不是.Net的人,但试图更新现有的.net网站。尝试为body标签设置唯一ID,即使我正在使用母版页。
<body id="<% page_name %>">
显然上面的示例不起作用,但不太确定是否有一个函数返回可以轻松添加到母版页的文件名,因此它根据页面名称为每个页面的body标签提供唯一的“id”
我希望不必在页面后面的每个代码上设置一些变量,而只需在主页面上设置一次。
可能以完全错误的方式解决这个问题。使用PHP我已经多次这样做了。
基本上我正在尝试为网站的每个页面获取一个唯一的正文ID。这将允许我使用CSS来设置页面特定的布局项。
答案 0 :(得分:3)
我完全按照你所说的做了。这就是我做到的。
身体标签中的内容非常接近。这就是我在masterpage的标记中使用的,它是一种代码隐藏方法。
<body id="<%=SetupPageName()%>">
在后面的母版页代码中,您需要使用以下语句:
using System.IO;
基本上它的作用是获取您将在运行时访问的页面的文件名。
以下方法用于获取页面的文件名,然后将该文件名指定为生成页面的唯一ID。
private string pageName = string.Empty;
protected string SetupPageName()
{
string pageName = GetPageName();
return pageName;
}
private string GetPageName()
{
pageName = Path.GetFileNameWithoutExtension(Request.FilePath);
if (pageName == "default")
{
pageName = "Default";
}
return pageName;
}
现在您应该能够像使用任何其他类型的ID一样访问该身份ID。我用它来通过样式表启用导航突出显示。还有一些涉及的步骤,但您通常可以在谷歌上找到这些答案。
祝你好运,希望这会有所帮助。答案 1 :(得分:0)
Google快速搜索引导我this page。也许你需要Request.Url
?
答案 2 :(得分:0)
您可能希望每个页面都使用您的母版页,向页面添加一些onload javascript(启动脚本块),JS函数将设置正文的id。
在每个页面包含的js文件中定义setBodyId(txt)函数。甚至把它放在母版页中。然后做这样的事情(未经测试):
在代码隐藏中的OnPreRender事件中:
ScriptManager.RegisterStartupScript(this, typeof(MyPage), "MyPage_Init", "setBodyId('MyPageaspx');", true);
然后你的JS函数就像这样(未经测试):
function setBodyId(txt){
document.body.id = txt;
}
注意我从页面名称中取出了一个点,以避免在身体ID中出现句点。
答案 3 :(得分:0)
如果您需要Masterpage中包含的解决方案,请向body标签添加onload函数调用。
<body onload="setBodyId()">
在母版页中定义此JS函数。像这样:
function setBodyId(){
var sPath = window.location.pathname;
var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
document.body.id=sPage;
}
答案 4 :(得分:0)
我正在使用它:
<body id="<%= Path.GetFileNameWithoutExtension(Request.FilePath) %>">
但它对URL重写不友好。