2009-10-30 64 views
0

我不是一個.Net小夥子,而是嘗試更新現有的.net站點。儘管我正在使用母版頁,但試圖爲body標籤設置唯一的ID。在.net中爲當前文件名設置身體標識

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

顯然上面的例子不工作,但不能肯定是否有返回,可以很容易地添加到母版,因此給每個頁面的body標籤一個獨特的「ID文件名功能「基於頁面名稱。

我寧願不必在頁面後面的每個代碼上設置一些變量,但只在主頁面上設置一次。

可能是這樣的完全錯誤的方式。使用PHP我已經做了很多次。

基本上我試圖爲網站的每個頁面獲取唯一的身份標識。這將允許我使用CSS來設置頁面特定的佈局項目。

+0

爲什麼一個文件名?例如,如果您使用JQuery,這可能會導致問題,因爲它不喜歡ID中的句點。也許提到你用這個id試圖達到什麼 - 你可能會得到一個很好的替代解決方案答案... – RichardOD 2009-10-30 19:06:56

+0

更新的問題。我只需要爲每個頁面指定一個特定的身份標識,並且認爲文件名稱是一個很好的唯一標識。 – bgreater 2009-10-30 19:19:05

回答

3

我已經完成了你正在談論的內容。這是我做到的。

你在身上的標籤是非常接近的。這是我在masterpage的標記中使用的,它是方法背後的代碼。

<body id="<%=SetupPageName()%>"> 

在背後的母版的代碼,你需要這個using語句:

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。我已經使用它來通過樣式表啓用導航高亮顯示。還有幾個步驟涉及到,但通常您可以在Google上找到這些答案。

祝你好運,並希望這有助於。

+0

這應該這樣做。謝謝! – bgreater 2009-10-30 19:48:52

0

快速谷歌搜索導致我到this page。也許你需要Request.Url

+0

System.IO.Path.GetFileName(Request.PhysicalPath)是一種獲取文件名的方法。 – RichardOD 2009-10-30 19:16:00

+0

總之,無需使用javascript即可將該路徑名獲取到母版頁 – bgreater 2009-10-30 19:22:54

0

您可能希望讓每個頁面使用您的母版頁,將一些onload javascript添加到頁面(啓動腳本塊),並且該JS函數將設置主體的ID。

讓你的setBodyId(txt)函數在每個頁面包含的js文件中定義。甚至放入主頁面。然後做這樣的事情(未經測試):

在代碼隱藏OnPreRender事件:

ScriptManager.RegisterStartupScript(this, typeof(MyPage), "MyPage_Init", "setBodyId('MyPageaspx');", true); 

那麼你的JS功能會是這樣(未經):

function setBodyId(txt){ 
document.body.id = txt; 
} 

注意我了點擊頁面名稱以避免身份標識中的句點。

0

如果你想包含在母版的解決方案,添加一個onload函數調用body標籤。

<body onload="setBodyId()"> 

在主頁面定義這個JS函數。就像這樣:

function setBodyId(){  
    var sPath = window.location.pathname; 
    var sPage = sPath.substring(sPath.lastIndexOf('/') + 1); 
    document.body.id=sPage; 
} 
+0

我測試了這一點,它的工作原理。 – Sherri 2009-10-30 19:20:44

0

我使用這個:

<body id="<%= Path.GetFileNameWithoutExtension(Request.FilePath) %>"> 

,但它不是友好的URL重寫。

相關問題