我目前正在使用内部框架.这一切都很棒,但框架不使用aspx页面,它使用Response.Write呈现页面.我遇到的问题是我需要在页面上使用rad控件,所以我需要做的就是生成rad控件来获取HTML代码,这样我就可以将它转储到页面上了.这可能吗?我已经尝试创建一个Page对象来使其工作,但它不起作用.似乎在调用页面时,它正在进行其他一些初始化.我也尝试将HttpContext.Current.Handler强制转换为页面,但这不起作用,因为它们使用的是另一个类,而不是System.Web.UI.Page来处理请求.
在这一点上,我不太确定还有什么可以尝试的.如果我可以模仿Page创建类,那将是非常棒的.有没有人知道正确创建和初始化Page对象的确切步骤?
希望这是有道理的......如果没有,我会尽量让它更容易理解.
谢谢!
只是想给你我正在玩的代码.希望这会告诉你我想做什么:
这是有效的:
HtmlForm f = new HtmlForm();
RadEditor re = new RadEditor();
f.ID = "form1";
this.Page.Controls.Add(f);
re.ID = "rdControl";
StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);
//Page p = new Page();//(Page)HttpContext.Current.Handler;
//HtmlForm f = new HtmlForm();
//p.Controls.Add(f);
f.Controls.Add(re);
Run Code Online (Sandbox Code Playgroud)
这不起作用:
HtmlForm f = new HtmlForm();
RadEditor re = new RadEditor();
f.ID = "form1";
Page p = new Page();
p.Controls.Add(f);
re.ID = "rdControl";
StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);
//Page p = new Page();//(Page)HttpContext.Current.Handler;
//HtmlForm f = new HtmlForm();
//p.Controls.Add(f);
f.Controls.Add(re);
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想让第二个工作在某种程度上,所以我可以生成代码.抱歉这个烂摊子.这是我的测试代码.
所以我想到了,我想我知道问题在哪里.控件试图访问一堆未包含在dll中的文件,如语言文件,样式,js文件等.我认为问题可能是当我创建一个新的Page实例时,它不知道该页面引用所有资源的位置.有没有办法可以将页面设置为"虚拟"URL?现在我正在玩这个代码:
HttpContext context = new HttpContext(new HttpRequest(string.Empty, "http://localhost:2090/default.aspx", string.Empty), new HttpResponse(null));
Run Code Online (Sandbox Code Playgroud)
您可以尝试RenderControl方法,该方法写入HtmlTextWriter
var stringWriter = new StringWriter();
var htmlWriter = new HtmlTextWriter(stringWriter);
myControl.RenderControl(htmlWriter);
var s = stringWriter.ToString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7883 次 |
| 最近记录: |