Csharp/C#教程:覆盖Render方法的问题分享


覆盖Render方法的问题

我想序列化Web表单的所有输出(从.NET 3.5上的aspx和aspx.cs)到JSON。 所以,这是我的代码:

protected string myText; protected void Page_Load(object sender, EventArgs e) { myText = "
This is my whole code
"; } protected internal override void Render(HtmlTextWriter writer) { var serializer = new JavaScriptSerializer(); Response.Write(Request["callback"] + serializer.Serialize(writer.ToString())); }

但我得到这个错误:

 CS0507: 'moduli_Prova.Render(System.Web.UI.HtmlTextWriter)': cannot change access modifiers when overriding 'protected' inherited member 'System.Web.UI.Control.Render(System.Web.UI.HtmlTextWriter)' 

我哪里错了? 这是正确的方法吗?

我不认为你有internal覆盖

 protected override void Render(HtmlTextWriter writer) 

在覆盖派生类中的虚方法时,我们无法修改访问修饰符。

覆盖声明不能更改虚方法的可访问性。 但是,如果重写的基本方法在内部受到保护,并且它在与包含override方法的程序集不同的程序集中声明,则必须保护override方法声明的可访问性。

参考这里

也许是这样的:

 protected override void Render (HtmlTextWriter writer) { StringBuilder sb = new StringBuilder(); HtmlTextWriter tw = new HtmlTextWriter(new System.IO.StringWriter(sb)); //Render the page to the new HtmlTextWriter which actually writes to the stringbuilder base.Render(tw); //Get the rendered content string sContent = sb.ToString(); //Now output it to the page, if you want writer.Write(sContent); } 

编辑

我们知道所有页面都是从页面inheritance的。我们也知道一个新的htmltextwriter接受一个在构造stringwriter中有一个stringwriter 。 然后我们调用基类( page )将html呈现给我们的新HtmlTextWriter 。 它也渲染它也是渲染到htmltextwriter 。 所以现在我们在stringbuilder有html上下文。 然后我们只对输入的HtmlTextWriter说,它应该从我们的stringbuilder写入string

参考这里

上述就是C#学习教程:覆盖Render方法的问题分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1000555.html

(0)
上一篇 2021年12月27日
下一篇 2021年12月27日

精彩推荐