установить идентификатор тела в текущее имя файла в .net - PullRequest
0 голосов
/ 30 октября 2009

Я не парень .Net, но пытаюсь обновить существующий сайт .net. Попытка установить уникальный идентификатор для тега body, даже если я использую главную страницу.

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

Очевидно, что приведенный выше пример не работает, но не совсем уверен, существует ли функция, которая возвращает имя файла, которое может быть легко добавлено на главную страницу, поэтому он присваивает тегу тела каждой страницы уникальный «идентификатор» на основе имени страницы. .

Я бы предпочел не устанавливать какую-либо переменную для каждого кода за страницей, а только один раз на главной странице.

Может быть, это совершенно неверно. Используя PHP, я делал это несколько раз.

В основном я пытаюсь получить уникальный идентификатор тела для каждой страницы сайта. Это позволит мне использовать CSS для стилизации элементов макета страницы.

Ответы [ 5 ]

3 голосов
/ 30 октября 2009

Я сделал именно то, о чем ты говоришь. Вот как я это сделал.

То, что у вас есть в теге body, довольно близко. Это то, что я использовал в разметке главной страницы, это метод кода.

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

В коде мастер-страницы это необходимо с помощью оператора:

using System.IO;

По сути, он получает имя файла страницы, к которой вы будете обращаться во время выполнения.

Следующие методы используются для захвата имени файла страницы, а затем назначают это имя файла в качестве уникального идентификатора сгенерированной странице.

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

Теперь вы сможете получить доступ к этому идентификатору тела, как и к любому другому типу идентификатора. Я использовал это, чтобы включить подсветку навигации с помощью таблицы стилей. Есть еще несколько шагов, связанных с этим, но вы можете найти эти ответы в Google.

Удачи и надеюсь, что это поможет.

0 голосов
/ 23 ноября 2009

Я использую это:

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

но переписывание URL не подходит.

0 голосов
/ 30 октября 2009

Возможно, вы захотите, чтобы каждая страница, которая использует вашу мастер-страницу, добавила на страницу некоторый загружаемый JavaScript-код (блок сценария запуска), и эта функция JS установит идентификатор тела.

Определите функцию setBodyId (txt) в js-файле, который содержит каждая страница. Или даже положить его на главной странице. Затем сделайте что-то вроде этого (не проверено):

В событии OnPreRender в коде позади:

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

Тогда ваша функция JS будет такой (не проверенной):

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

Обратите внимание, что я убрал точку в имени страницы, чтобы избежать точек в идентификаторе тела.

0 голосов
/ 30 октября 2009

Если вы хотите, чтобы решение содержалось на главной странице, добавьте вызов функции 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 голосов
/ 30 октября 2009

Быстрый поиск в Google привел меня к этой странице . Может быть Request.Url это то, что вам нужно?

...