我开发工作的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());

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top