назначение класса css элементу управления главной страницы со страницы содержимого в asp.net - PullRequest
3 голосов
/ 21 июля 2010

У меня есть неупорядоченный список на главной странице ....

<ul id="mainMenu" runat="server">
<li id="mainHome" runat="server"><a href="#" title="Home" class="home">
        <span></span>Home</a></li>
<li id="mainManage" runat="server"><a href="Users.aspx" title="Manage" 
    class="manage"><span></span>Manage</a></li>
 <li id="mainEnquiry" runat="server"><a href="account.aspx" title="Enquiry" 
     class="enquiry"><span></span>Enquiry</a></li>
 <li id="mainReport" runat="server"><a href="EnquiryReport.aspx" title="Report" 
      class="report"><span></span>Report</a></li>
  </ul>

На странице содержимого я назначаю класс css одному из элементов списка ...

HtmlGenericControl home = (HtmlGenericControl)this.Page.Master.FindControl("mainMenu").FindControl("mainManage") as HtmlGenericControl;
                string cssToApply = "current";

                if (null != home)
                {
                    if (home.Attributes.ContainsKey("class"))
                    {
                        if (!home.Attributes["class"].Contains(cssToApply))
                        {
                             home.Attributes["class"] += " " + cssToApply;
                        }
                    }
                    else
                    {
                         home.Attributes.Add("class", cssToApply);
                    }
                }

и мой css,

#header ul li {
display:inline;
float:left;
}
#header ul a {
-x-system-font:none;
color:#FFFFFF;
display:block;
font-family:Trebuchet MS,Arial,sans-serif;
font-size:1.1em;
font-style:normal;
font-variant:normal;
font-weight:bold;
text-transform:uppercase;
text-decoration:none;
}
#header ul a {
-moz-border-radius:3px;
-webkit-border-radius:0.2em;
padding:3px 7px;
text-decoration:none;
}
#header ul a:focus, #header ul a:active, #header ul a:hover {
background-color:#829E7E;
outline-color:-moz-use-text-color;
outline-style:none;
outline-width:medium;
}
#header ul a.home {
margin:0 16px 0 17px;
}
#header ul #current a, #headermenu #current span{ /*currently selected tab*/
background-color: #BCE27F;
color:#666666;
white-space:nowrap;
}
#header ul a.manage,#header ul a.enquiry,#header ul a.report {
margin:0 14px 0 0;
}
#home #header ul a.home, #enquiry #header ul a.enquiry, #report #header ul a.report, #manage #header ul a.manage{
-moz-border-radius:3px;
-webkit-border-radius:0.2em;
background-color:#B9E27F;
color:#FFFFFF;
}

Но я получаю ошибку,

System.Web.UI.AttributeCollection' does not contain a definition for 'ContainsKey' and no extension method 'ContainsKey' accepting a first argument of type 'System.Web.UI.AttributeCollection' could be found (are you missing a using directive or an assembly reference?

Я пытаюсь присвоить current для Manage liсо страницы моего контента на главную страницу ... Любое предложение ...

Ответы [ 2 ]

4 голосов
/ 21 июля 2010

Как говорится, в AttributeCollection.

нет метода ContainsKey.

Измените свой код на следующий, и он будет делать то же самое:

string classAttribute = home.Attributes["class"];
if (string.IsNullOrEmpty(classAttribute))
{
    home.Attributes.Add("class", cssToApply);
}
else
{
    if (!classAttribute.Contains(cssToApply))
    {
        home.Attributes["class"] += " " + cssToApply;
    }
}
1 голос
/ 03 июня 2012

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

на странице элемента управления и добавьте

MasterPageFile="~/MyMasterPage.master"

в коде файловваших элементов управления

using System.WEB.UI.Htmlcontrols;//add your namespace//

HtmlGenericControls mycontrol = (HtmlGenericControl)this.Page.Master.FindControl("yourcontrolname") as HtmlGenericControl;

mycontrol.Attributes.Add("class", "cssToApply");

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

<div class"X" class"X" class"X">

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

Надеюсь, это поможет, и теперь у меня есть ресурс, который поможет мне, когда я забуду, как это сделать, ха-ха.

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