根据我运行的简单测试,我认为不可能使用内联< style>标记到ASP.NET服务器控件。该样式最终没有呈现给输出HTML。即使有可能,我也相信这样做是不好的做法。
有可能这样做吗?我可以看到它对于只有1或2个CSS类的快速原型很有用。
更新
按照Jonathan的要求,我打算发布代码。但是,当我打开我的项目并再次加载页面时(只是为了踢)它正确运行。我的猜测是,它与重启Visual Studio在运行页面时启动的ASP.NET开发服务器有关。
无论如何,当我在页面上包含相同的多个控件时,我也得到了多个相同的样式。这可能是解释为什么这样做是件坏事。无论如何,了解完成任务的最佳实践和替代方法总是好的,所以我非常感谢大家的答案。
答案 0 :(得分:47)
Intellisense不会给你提示,但你可以这样做:
<asp:Label ID="Label1" runat="server" Text="Label" style="color:Red;"></asp:Label>
答案 1 :(得分:13)
样式元素位于头部。如果要在页面中包含样式表,则应在外部定义样式表,并使用
<link>
链接到该样式表。
因此,在控件中包含样式元素(例如<style type="text\css"></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");
但请记住这将替换在样式属性上设置的任何现有样式。如果您尝试在代码中的多个位置设置样式,这可能是一个问题,因此需要注意。
使用CSS类会更好,因为您可以对多个样式声明进行分组并避免冗余和页面膨胀。从WebControl派生的所有控件都有一个CssClass属性,您可以使用它,但请注意不要覆盖已在其他位置应用的现有类。
答案 2 :(得分:7)
如果您使用属性[&#34; style&#34;],则每次调用时都会覆盖该样式。如果您在两个不同的代码段中进行调用,则可能会出现问题。同样,它可能是一个问题,因为框架包括基本设置的属性,如边框和颜色,也将作为内联样式应用。这是一个例子:
// wrong: first style will be overwritten
myControl.Attributes["style"] = "text-align:center";
// in some other section of code
myControl.Attributes["style"] = "width:100%";
为了好好玩,请设置这样的样式:
// correct: both style settings are applied
myControl.Attributes.CssStyle.Add("text-align", "center");
// in some other section of code
myControl.Attributes.CssStyle.Add("width", "100%");
答案 3 :(得分:1)
我认为您必须将其作为属性添加到服务器控件中...才能呈现为HTML。
所以基本上(在C#中),
ControlName.Attributes["style"] = "color:red";