Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将css类添加到html通用控件div?_C#_Css - Fatal编程技术网

C# 如何将css类添加到html通用控件div?

C# 如何将css类添加到html通用控件div?,c#,css,C#,Css,我创建了一个div标记,如下所示: System.Web.UI.HtmlControls.HtmlGenericControl dynDiv = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV"); dynDiv.Style.Add(HtmlTextWriterStyle.BorderStyle, "1px solid #DBE0E4"); dynDiv.Style.Add(HtmlTextWriterStyle.Heig

我创建了一个div标记,如下所示:

System.Web.UI.HtmlControls.HtmlGenericControl dynDiv = 
    new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
dynDiv.Style.Add(HtmlTextWriterStyle.BorderStyle, "1px solid #DBE0E4");
dynDiv.Style.Add(HtmlTextWriterStyle.Height, "auto");
dynDiv.Style.Add(HtmlTextWriterStyle.MarginTop, "5px");
dynDiv.Style.Add(HtmlTextWriterStyle.PaddingBottom, "5px");
dynDiv.Style.Add(HtmlTextWriterStyle.Width, "682px");
我将样式添加到div标记中,如下所示:

System.Web.UI.HtmlControls.HtmlGenericControl dynDiv = 
    new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
dynDiv.Style.Add(HtmlTextWriterStyle.BorderStyle, "1px solid #DBE0E4");
dynDiv.Style.Add(HtmlTextWriterStyle.Height, "auto");
dynDiv.Style.Add(HtmlTextWriterStyle.MarginTop, "5px");
dynDiv.Style.Add(HtmlTextWriterStyle.PaddingBottom, "5px");
dynDiv.Style.Add(HtmlTextWriterStyle.Width, "682px");
但是我需要通过文件夹
~/css/maincss.css
中的外部css文件来控制div标记的样式


如何将该文件中的css应用于该div?

如果不将css文件添加到该div,请向其添加一个类,然后将导入内容放在HTML页面的顶部,如下所示:

<link href="../files/external.css" rel="stylesheet" type="text/css" />

要将类添加到通过
HtmlGenericControl
生成的div中,可以使用:

div1.Attributes.Add("class", "classname"); 
如果您使用的是
面板
选项,它将是:

panel1.CssClass = "classname";
/// <summary>
/// Appends CSS Class seprated by a space character
/// </summary>
/// <param name="control">Target control</param>
/// <param name="cssClass">CSS class name to append</param>
public static void AppendCss(HtmlGenericControl control, string cssClass)
{
    // Ensure CSS class is definied
    if (string.IsNullOrEmpty(cssClass)) return;

    // Append CSS class
    if (string.IsNullOrEmpty(control.Attributes["class"]))
    {
        // Set our CSS Class as only one
        control.Attributes["class"] = cssClass;
    }
    else
    {
        // Append new CSS class with space as seprator
        control.Attributes["class"] += (" " + cssClass);
    }
}

如果要将类添加到元素的现有类列表中,请执行以下操作:

element.Attributes.Add("class", element.Attributes["class"] + " " + sType);

如果要重复此操作,最好使用扩展方法:

// appends a string class to the html controls class attribute
public static void AddClass(this HtmlControl control, string newClass)
{
    if (control.Attributes["class"].IsNotNullAndNotEmpty())
    {
        control.Attributes["class"] += " " + newClass;
    }
    else
    {
        control.Attributes["class"] = newClass;
    }
}
我的做法是:

panel1.CssClass = "classname";
/// <summary>
/// Appends CSS Class seprated by a space character
/// </summary>
/// <param name="control">Target control</param>
/// <param name="cssClass">CSS class name to append</param>
public static void AppendCss(HtmlGenericControl control, string cssClass)
{
    // Ensure CSS class is definied
    if (string.IsNullOrEmpty(cssClass)) return;

    // Append CSS class
    if (string.IsNullOrEmpty(control.Attributes["class"]))
    {
        // Set our CSS Class as only one
        control.Attributes["class"] = cssClass;
    }
    else
    {
        // Append new CSS class with space as seprator
        control.Attributes["class"] += (" " + cssClass);
    }
}
//
///附加由空格字符分隔的CSS类
/// 
///目标控制
///要附加的CSS类名
公共静态void AppendCss(HtmlGenericControl控件,字符串cssClass)
{
//确保CSS类已定义
if(string.IsNullOrEmpty(cssClass))返回;
//附加CSS类
if(string.IsNullOrEmpty(control.Attributes[“class”]))
{
//将我们的CSS类设置为仅一个
control.Attributes[“class”]=cssClass;
}
其他的
{
//用空格作为seperator追加新的CSS类
控件属性[“类”]+=(“”+cssClass);
}
}

我认为Curt的答案是正确的,但是,如果您想向已经在ASP.NET代码中声明了类的div添加一个类,该怎么办

这是我的解决方案,它是一个通用方法,因此您可以直接调用它,如下所示:

Asp Net Div声明:

<div id="divButtonWrapper" runat="server" class="text-center smallbutton fixPad">
通用类:

public static class HtmlGenericControlExtensions
{
    public static void AddClassToHtmlControl(this HtmlGenericControl htmlGenericControl, string className)
    {
        if (string.IsNullOrWhiteSpace(className))
            return;

        htmlGenericControl
            .Attributes.Add("class", string.Join(" ", htmlGenericControl
            .Attributes["class"]
            .Split(' ')
            .Except(new[] { "", className })
            .Concat(new[] { className })
            .ToArray()));
    }
}

扩展方法怎么样

这里我有一个显示或隐藏方法。使用我的CSS类隐藏

然后,当您要显示或隐藏控件时:

myUserControl.Hide();

//... some other code

myUserControl.Show();

如果要将类添加到元素的现有类列表中,可采用另一种方法:

element.Attributes.Add("class", element.Attributes["class"] + " " + sType);
element.Attributes[“class”]+=“myCssClass”;

在div元素中添加一个类或ID,然后您可以在CSS中使用它做任何您喜欢的事情。从技术上讲,它将替换该类。它没有添加它。您可以使用dynDiv.Attributes[“class”]+=“myCssClass”@GarrGodfrey记得在类之间添加一个空格。我应该把泛型类放在哪里?你可以把它放在web应用程序的一个Util文件夹中。这是我为此目的创建的一个文件夹?是的,但理论上你可以把它放在任何你想要的地方。它仅用于组织目的。如何将
.myStyle
类添加到html元素中?这就是OP的问题所在。这是真的,尽管下面的其他答案适用于是否已经在课程列表中的课程。