将body ID设置为.net中的当前文件名

时间:2009-10-30 19:03:20

标签: .net master-pages

我不是.Net的人,但试图更新现有的.net网站。尝试为body标签设置唯一ID,即使我正在使用母版页。

<body id="<% page_name %>">

显然上面的示例不起作用,但不太确定是否有一个函数返回可以轻松添加到母版页的文件名,因此它根据页面名称为每个页面的body标签提供唯一的“id”

我希望不必在页面后面的每个代码上设置一些变量,而只需在主页面上设置一次。

可能以完全错误的方式解决这个问题。使用PHP我已经多次这样做了。

基本上我正在尝试为网站的每个页面获取一个唯一的正文ID。这将允许我使用CSS来设置页面特定的布局项。

5 个答案:

答案 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重写不友好。