Шаблоны .net на какой странице я нахожусь? - PullRequest
0 голосов
/ 10 ноября 2009

Мне любопытно знать, что при использовании .net 2.0 с главной страницей есть ли способ, с помощью которого я могу узнать, на какой странице я работаю, чтобы я мог использовать ее для стилизации вкладки?

На моей главной странице есть панель навигации, и я хочу сделать следующее:

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

Спасибо Р.

Ответы [ 3 ]

1 голос
/ 10 ноября 2009

MasterPage, хотя название звучит иначе, как ребенок по отношению к странице, которая его использует.

Думайте об этом как о пользовательском контроле на странице. На самом деле вы можете получить доступ к экземпляру Page и его свойству Request.

Вот пример того, как вы можете его использовать

switch(Request.Path){
  case "/page1/aspx":
    //dosomething to your tabs
  break:
  case "/page1/aspx":
    //dosomething to your tabs
  break:
  .
  .
  .
  default:
    //dosomething else
  .
  .
  .
}
1 голос
/ 10 ноября 2009

Создайте следующий метод на своей главной странице (или вспомогательном классе), а затем добавьте ссылку на него в свой метод Page_Load на главной странице:

public string GetCurrentPageName() 
{ 
    Uri uri = Request.Url; 
    string[] uriSegments = uri.Segments; 

    string pageName = "";

    if( 0 < uriSegments.Length ) 
    { 
        pageName = uriSegments.Last(); 
    } 

    return pageName;

}

}

Это должно дать вам текущее имя файла - вы можете также удалить часть имени файла «.aspx». Я еще не проверял это с QueryString, поэтому не уверен, что Last () все еще возвращает имя файла в этом случае.

Если ваши вкладки являются элементами управления asp.net, вы можете использовать FindControl (), чтобы найти вкладку - вам нужно будет сопоставить идентификаторы вкладок с именами страниц. Если у вас есть элемент управления, вы можете добавить «выбранный» стиль в коде позади.

1 голос
/ 10 ноября 2009

Если вы хотите изменить содержимое главной страницы со страницы (т.е. изменить цвет вкладки), вам следует:

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

т.е:.

public void changecolor(string PageName, string Color){
    switch(PageName){
       case "home":
           this.TabHome.Color=Color;
    }
}

Затем поместите директиву вверху страницы aspx с путем к главной странице. Вроде таких:

 <%@ MasterType VirtualPath="~/Site.master" %>

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

protected void Page_Init(object sender, EventArgs e){
    Master.changecolor("home", "red"); 
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...