HtmlTextWriter分享到String-我是否忽略了什么?也许我说的全错了(如果我这样做请告诉我),但我用一个看似非常简单的概念碰壁了。此渲染覆盖来自用户控件。protectedoverridevoidRender(HtmlTextWriterwriter){字符串htmlAboutToBeRendered=writer.GetWhatHasBeenWrittenToTheWriterSoFar();//做一些邪恶的事情,但与htmlAboutToBeRendered无关}这似乎是一个显而易见的方法,但我似乎找不到它。有人可以为我解释一下吗?试试这个:protectedoverridevoidRenderContents(HtmlTextWriteroutput){StringBuildersb=newStringBuilder();HtmlTextWriterhtw=newHtmlTextWriter(newSystem.IO.StringWriter(sb,System.Globalization.CultureInfo.InvariantCulture));foreach(控件中的控件ctrl){ctrl.RenderControl(htw);}字符串strContents=sb.ToString();您可以从HttpTextWriter派生并覆盖OnTagRender、OnAttributeRender和OnStyleRender方法,并在呈现时修改标记。OnTagRender的MSDN文档显示了在呈现期间修改标签的示例:http://msdn.microsoft.com/en-us/library/system.web.ui.htmltextwriter.ontagrender.aspx使用relection的替代方法:privatestringGetString(HtmlTextWriterwriter){//查看writer内部属性的标志System.Reflection.BindingFlagsflags=System.Reflection.BindingFlags.Default;标志|=System.Reflection.BindingFlags.NonPublic;标志|=System.Reflection。BindingFlags.Instance;标志|=System.Reflection.BindingFlags.FlattenHierarchy;标志|=System.Reflection.BindingFlags.Public;//获取有关内部TextWriter对象的信息System.Reflection.FieldInfobaseWriter=writer.GetType().GetField("writer",flags);//使用该信息创建一个StringWriterSystem.IO.StringWriterreflectedWriter=(System.IO.StringWriter)baseWriter.GetValue(writer);//现在我们得到一个StringBuilder!StringBuilderbuilder=reflectedWriter.GetStringBuilder();返回builder.ToString();然后,使用String和StringBuilder重新创建HtmlTextWriter是一件简单的事情这是使用我在EggheadCafe的TomheadSpink和Rotsey之间的对话中发现的一些线索构建的以上是C#学习教程:HtmlTextWriter到String-我是否忽略了什么?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
