att*_*ack 4 html asp.net stringbuilder
我正在开发一个ASP.NET Web应用程序,我一直在遇到同样的问题:
有时我想从代码隐藏中将HTML写入页面.例如,我有一个页面,Editor.aspx,输出根据GET变量的值"视图"而变化.换句话说,"Editor.aspx?view = apples"输出的HTML不同于"Editor.aspx?view = oranges".
我目前用StringBuilder输出这个HTML.例如,如果我想创建一个列表,我可能会使用以下语法:
myStringBuilder.AppendLine("<ul id=\"editor-menu\">");
myStringBuilder.AppendLine("<li>List Item 1</li>");
myStringBuilder.AppendLine("</ul>");
Run Code Online (Sandbox Code Playgroud)
问题是我宁愿使用ASP.NET的List控件来实现这个目的,因为几行StringBuilder语法妨碍了我的代码的可读性.但是,ASP.NET控件倾向于输出复杂的HTML,具有唯一的ID,内联样式以及偶尔的内联JavaScript块.
我的问题是,是否有一个ASP.NET控件只代表一个通用的HTML标签?换句话说,是否存在类似以下示例的控件:
HTMLTagControl list = new HTMLTagControl("ul");
list.ID = "editor-menu";
HTMLTagControl listItem = new HTMLTagControl("li");
listItem.Text = "List Item 1";
list.AppendChild(listItem);
Run Code Online (Sandbox Code Playgroud)
我知道有包装器等等,但我宁愿从简化开始,而不是驯服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);
Run Code Online (Sandbox Code Playgroud)
如果你真的需要了解裸机,那么你应该使用HtmlTextWriter类而不是StringBuilder,因为它更适合于抽出原始HTML.
| 归档时间: |
|
| 查看次数: |
1926 次 |
| 最近记录: |