ASP.NET 2.0 将样式动态添加到控件中的页面
我需要从自定义控件中添加到页面。 我无法使用样式表 (.css),因为我使用的是 url(...) 并且需要解析该 url。
现在我正在做:
Page.Header.Controls.Add(new LiteralControl("<style type='text/css'>.xyz { color: blue; }</style>"));
但我希望有一些更优雅的东西?
I need to add to the page from within a custom control. I can't use a stylesheet (.css) because I'm using a url(...) and need to resolve the url.
Right now I'm doing:
Page.Header.Controls.Add(new LiteralControl("<style type='text/css'>.xyz { color: blue; }</style>"));
But I'm hoping for something a touch more elegant?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我创建自己的类并继承 Style,并使用自己的字典来存储默认 Style 类不包含的属性。 这是一个简短的例子......
I create my own class and inherit Style, with my own dictionary for attributes that the default Style class does not include. Here is a brief example...
我想这对于这个问题来说并不是一个糟糕的解决方案。 如果您有一个外部样式表文件,这段代码将完成这项工作:
另一个想法是编写您自己的 ASP.NET ServerControl“HtmlInlineStyle”,这样您就可以调用这样(脚本标签将由您的服务器控件完成):
此 博客条目 和注释显示了一些替代方案(ScriptManager.RegisterClientScriptBlock)。 但在我看来你的解决方案是可以的。
I guess it's not a bad solution for the problem. If you had an external stylesheet file, this piece of code will do the work:
Another idea is to write your own ASP.NET ServerControl "HtmlInlineStyle", so you could call it this way (script tags would be done by your server control):
This blog entry and the comments show some alternatives (ScriptManager.RegisterClientScriptBlock). But in my opinion your solution is okay.
这是另一种方法... 例如:
父级 ASPX 部分:
在控件内:
请注意,这假定父级 ASPX 页面具有为目标控件设置的类属性。 如果没有,那么您将需要使用 MergeStyle 方法将样式与控件合并。 (这要求控件为
runat="server"
)。此代码呈现以下输出:(为了方便起见,显示完整源代码)
Here's another way... For example:
Parent ASPX portion:
Within the Control:
Note that this assumes that the parent ASPX page has the class attribute set for the target control. If not, then you will need to merge the style with the control using the MergeStyle method. (This requires that the control be
runat="server"
).This code renders the following output: (Showing entire source for your convenience)