在ASP.NET MVC中使用HtmlTextWriter

Adr*_*ong 3 asp.net-mvc performance htmltextwriter

我正在迁移一些旧代码,其中HtmlTextWriter广泛用于呈现UI元素.

我正在迁移代码以使用ASP.NET MVC 1.0.据我所知,我没有使用任何HtmlTextWriter特定的功能(如缩进).

目前,我使用包装器方法返回由以下生成的字符串HtmlTextWriter:

var sw = new StringWriter();
var xhtmlTextWriter = new XhtmlTextWriter(sw);
GenerateHtml(xhtmlTextWriter);
return sw.ToString();
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 我试图HtmlTextWriter从ASP.NET MVC View 获取实例,但显然即使HtmlHelper也不使用它.我想念什么吗?

  2. 每次调用GenerateHtml都会生成小的HTML片段,一般不超过1000个字符,但可能会有很多调用.是否值得将HtmlTextWriter依赖代码重写为StringBuilder?或者相反,如何创建HtmlTextWriter将在所有调用上使用的实例(并在迭代结束时刷新).

小智 5

我认为使用helper.ViewContext.writer不会创建StringBuider和StringWriter.

然后上面的示例代码将是:

var calendar = new DayPilotCalendar();
if( model != null )
   {
   model.CopyTo( calendar );
   }
if( options != null )
   {
   options.CopyTo( calendar );
   }

HtmlTextWriter writer = new HtmlTextWriter( helper.ViewContext.Writer );

writer.AddAttribute( HtmlTextWriterAttribute.Class, "dayPilot" );
writer.RenderBeginTag( HtmlTextWriterTag.Div );
calendar.RenderControl( writer );
writer.RenderEndTag();  // Close DIV

return( null );         // Don't need to return anything.
Run Code Online (Sandbox Code Playgroud)

免责声明:到目前为止,我只尝试使用helper.ViewContext.Writer生成<UL>列表.它工作正常.没有尝试过渲染控件.