将内联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>.
因此在控件中包含样式元素(例如<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");
但是请记住,这将替换在style属性上设置的所有现有样式。如果我们尝试在代码中的多个位置设置样式,则可能会出现问题,因此需要提防。
使用CSS类将是更可取的,因为我们可以对多个样式声明进行分组,避免冗余和页面膨胀。从WebControl派生的所有控件都具有CssClass属性,我们可以使用该属性,但是再次要注意不要覆盖已在其他地方应用的现有类。