ASP.NET HTML控件用干净的输出?
-
12-09-2019 - |
题
我开发工作的ASP.NET Web应用程序,和我一直运行到同一个问题:
有时我想写HTML从代码隐藏的页面。例如,我有一个页面,Editor.aspx,利用该变化取决于一个GET变量的值输出,“视图”。换言之, “Editor.aspx?视图=苹果” 输出不同的HTML不是 “Editor.aspx?视图=桔子”。
我当前输出的这个HTML与StringBuilder的。例如,如果我想创建一个列表,我可能会使用的语法如下:
myStringBuilder.AppendLine("<ul id=\"editor-menu\">");
myStringBuilder.AppendLine("<li>List Item 1</li>");
myStringBuilder.AppendLine("</ul>");
的问题是,我宁愿使用ASP.NET的列表控件用于此目的,因为StringBuilder的语法的几行妨碍我的代码的可读性。然而,ASP.NET控件倾向于输出旋绕HTML,具有独特的ID的,内联样式,和内嵌JavaScript偶尔块。
我的问题是,是否有其仅表示一个一般的HTML标签的ASP.NET控制?换句话说,是有像以下示例的控制:
HTMLTagControl list = new HTMLTagControl("ul");
list.ID = "editor-menu";
HTMLTagControl listItem = new HTMLTagControl("li");
listItem.Text = "List Item 1";
list.AppendChild(listItem);
我知道有包装和这样,但不是驯服ASP.NET的复杂性,我宁愿用简单从启动开始就。
解决方案
有一个ASP.NET控制其 仅表示一个通用的HTML标签?
是的,这就是所谓的 HtmlGenericControl :)
至于你想要什么没有,但你可以得到周围很容易:
HtmlGenericControl list = new HtmlGenericControl("ul");
list.ID = "editor-menu";
HtmlGenericControl listItem = new HtmlGenericControl("li");
listItem.InnerText = "List Item 1";
list.Controls.Add(listItem);
如果你真的需要静下心来裸机,那么你应该使用的的HtmlTextWriter 类代替,因为它是更量身定制,以泵出原始的HTML。一个StringBuilder
其他提示
如果你想只分配您的StringBuilder的结果,空白对照,您可以使用此一<asp:Literal />
控制。
LiteralControl具有constractor,你可以通过你的HTML ... 我认为这是更好的。
新LiteralControl(sb.ToString());