尝试在动态生成的html标记上应用样式属性

时间:2012-12-24 15:12:16

标签: c# asp.net css webforms

这是一个已知的问题/问题,无法在动态(代码隐藏)Generated Html标记上使用硬编码(标准)CSS样式设置吗?

在我正在进行的项目中,我正在生成html标记,针对每个元素说明未排序的列表项(...源是数据库查询结果)

为了说明的目的,我会画出这个想法,我认为已经做了很多......

 
collection = some sql query results returned  as `List<string>` type

counter  = 0

foreach item in collection 
someHtmlString = String.Format("<li  id='{0}_{1}'> {0}</li> ",  item, counter)
counter ++

因此,对于进入for / foreach循环的每个项目,我制造一组特定的css和html属性,通常它被分成进入循环的列表项的子集,就像你一样通常在这种情况下为每个元素分配一个类,所以碰巧我有的属性,随着更具体的设计需要而增长,甚至更多..其他属性作为javascript事件,但大多数风格,

说10 x css属性,设置3或4种类型的设置,这意味着在我的代码中看到脚印不再那么有趣

还有一步之前,我现在可以考虑从文件中读取css样式设置(使用System.IO),我确实尝试应用这些属性,通过它们所属的位置,在样式.css文件中,但我可以注意到那些样式属性无法应用于style.css代码/文件生成的代码,而不是硬编码的html标记

所以我想知道,如果你想避免代码背后的那一行,除了从一个单独的文件中读取它(比如我能想到的昏迷),然后解析它,有什么选择:< / p>

说一个 txtfile - 每一行都是 Property value

就像在字典中一样,你可以将它直接读入/加载到文件中的代码中,

 
dictionary<string, string> StyleDict = new dictionary<string, string>();

styleDict.add(styleProperty, some value);
 ...etc' (10 lines like this, x 3 or 4 times , as each could be a css class  i could use)

我认为我没有想法,将样式应用于生成的HtmlMarkup的正确方法是什么? (这是我做错了还是已知问题?)

1 个答案:

答案 0 :(得分:1)

正如Zack T.建议的那样,你可以使用他展示的方法来应用这些风格:

someHtmlString = String.Format("<li id='{0}_{1}' class='listItem'>{0}</li>", item, counter);

现在您抱怨这些样式不适用。为此,您需要检查定义是否在HTML Style标记内的Head标记下呈现。或者,指向外部CSS文件的链接应放在Head标记内。

下面的示例代码段
<html>
<head>
<style type="text/css">
    .listItem
    {
        background-color:Red;
    }
</style>
</head>
<body></body>
</html>