在桌面应用程序中渲染ASP.NET控件?

Aar*_*nLS 4 .net c# asp.net

是否可以获取页面对象,或者只是一个ASP.NET控件,并以某种方式在桌面应用程序中呈现它?

例如,作为桌面应用程序的Visual Studio在设计图层中呈现ASP.NET控件.我想做类似的事情.

编辑:我正在集思广益,如何为一个非常简单的数据输入应用程序创建一个非常简单的设计器.我会有一些自定义的ASP.NET数据输入控件,我希望非专业用户能够看到尽可能接近的页面.所以我希望应用程序中的一个面板显示渲染的控件集合,但面板不需要以任何方式进行交互.也就是说,没有点击和拖动或调整控件等大小.将有表单作者与之交互的标准窗体控件来定义页面的布局.

我将简单地保存他们添加的控件列表以及"设计人员"(非技术专家)提供的其他信息,我将使用该信息稍后通过手动或自动过程创建实际的aspx页面,待定.

SLa*_*aks 7

对的,这是可能的.

你需要创建一个单独的AppDomain用于ASP.Net,描述在这里.

编辑:要呈现页面,请使用以下代码:

string htmlSource;
var page = (Page)BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page));

page.ProcessRequest(new HttpContext(new SimpleWorkerRequest("", null, null)));
using (var writer = new StringWriter(CultureInfo.InvariantCulture)) {
    using (var htmlWriter = new HtmlTextWriter(writer))
        page.RenderControl(htmlWriter);
    htmlSource = writer.ToString();
}
Run Code Online (Sandbox Code Playgroud)

请注意,此代码必须在ASP.Net AppDomain中运行.
要做到这一点,你可以放入一个你给出的类型的公共方法CreateApplicationHost.