mar*_*zzz 3 .net c# json render
我想序列化Web表单的所有输出(从.NET 3.5上的aspx和aspx.cs)到JSON.所以,这是我的代码:
protected string myText;
protected void Page_Load(object sender, EventArgs e)
{
myText = "<div><span>This is my whole code</span><div><a style=\"color:blue !important;\" href=\"#\">A link</a></div></div>";
}
protected internal override void Render(HtmlTextWriter writer)
{
var serializer = new JavaScriptSerializer();
Response.Write(Request["callback"] + serializer.Serialize(writer.ToString()));
}
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
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)'
Run Code Online (Sandbox Code Playgroud)
我哪里错了?这是正确的方法吗?
Ari*_*ion 10
我认为你没有internal覆盖
protected override void Render(HtmlTextWriter writer)
Run Code Online (Sandbox Code Playgroud)
在覆盖派生类中的虚方法时,我们无法修改访问修饰符.
覆盖声明不能更改虚方法的可访问性.但是,如果重写的基本方法在内部受到保护,并且它在与包含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);
}
Run Code Online (Sandbox Code Playgroud)
编辑
我们知道,所有页面继承page.我们也知道,新htmltextwriter参加一个stringwriter具有stringbuilder在构造器.然后我们调用基类(page)将html呈现给我们的新HtmlTextWriter.它渲染它htmltextwriter也是渲染的stringbuilder.所以现在我们有了html上下文stringbuilder.然后我们只是对HtmlTextWriter那个应该string从我们这里写下来的人说stringbuilder.
参考这里
| 归档时间: |
|
| 查看次数: |
11568 次 |
| 最近记录: |