将内联CSS应用于ASP.NET服务器控件

时间:2020-03-06 14:21:13  来源:igfitidea点击:

根据我运行的简单测试,我认为不可能将内联<style>标记放入ASP.NET服务器控件中。样式最终没有呈现为输出HTML。即使有可能,我敢肯定这样做是不好的做法。

是否有可能做到这一点?我看到它对于仅具有1或者2个CSS类的快速原型很有用。

更新:

按照乔纳森(Jonathan)的要求,我要发布代码。但是,当我打开项目并再次加载页面(仅用于踢球)时,它可以正常运行。我的猜测是它与重新启动运行页面时Visual Studio启动的ASP.NET开发服务器有关。

无论如何,当我在页面上包含相同的多个控件时,我也会获得多个相同的样式。这可能是为什么这样做不好的解释。无论如何,了解完成任务的最佳实践和替代方法始终是一件好事,因此,我感谢大家的回答。

解决方案

我认为我们必须将其作为属性添加到服务器控件中,以使其呈现为HTML。

所以基本上(在C#中),

ControlName.Attributes["style"] = "color:red";

Intellisense不会给我们提示,但是我们可以这样做:

<asp:Label ID="Label1" runat="server" Text="Label" style="color:Red;"></asp:Label>

根据www.w3schools.com:

The style element goes in the head section. If you want to include a style sheet in your page, you should define the style sheet externally, and link to it using <link>.

因此在控件中包含样式元素(例如&lt;style type =" text \ css"> &lt;/ style>块)不是一个好主意。如果可以的话,它可能会在某些浏览器中起作用,但无法验证,这是一种不好的做法。

如果要将内联样式应用于元素,则可以使用以下两种方法之一:

C#

myControl.Attributes["style"] = "color:red";

myControl.Attributes.Add("style", "color:red");

VB.NET

myControl.Attributes("style") = "color:red";

myControl.Attributes.Add("style", "color:red");

但是请记住,这将替换在style属性上设置的所有现有样式。如果我们尝试在代码中的多个位置设置样式,则可能会出现问题,因此需要提防。

使用CSS类将是更可取的,因为我们可以对多个样式声明进行分组,避免冗余和页面膨胀。从WebControl派生的所有控件都具有CssClass属性,我们可以使用该属性,但是再次要注意不要覆盖已在其他地方应用的现有类。