是否可以获取一个页面对象,或者可能只是一个 ASP.NET 控件,并以某种方式在桌面应用程序中呈现它?
例如,作为桌面应用程序的 Visual Studio 在设计界面中呈现 ASP.NET 控件。我想做类似的事情。
编辑: 我正在集思广益如何为一个非常简单的数据输入应用程序制作一个非常简单的设计器。我会有一些自定义的 ASP.NET 数据输入控件,我希望外行用户能够尽可能近地看到页面的外观。所以我希望应用程序中的面板显示呈现的控件集合,但面板不需要以任何方式进行交互。 IE。没有点击和拖动或调整控件大小等。将有标准的窗口窗体控件,窗体作者可以与之交互以定义页面布局。
我将简单地保存他们添加的控件列表以及“设计师”(非技术专家)提供的一些其他信息,我将使用这些信息稍后通过手册创建实际的 aspx 页面或自动化流程,待定。
最佳答案
是的,这是可能的。
您需要为 ASP.Net 创建一个单独的 AppDomain,如所述here .
编辑:要呈现页面,请使用以下代码:
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();
}
请注意,此代码必须在 ASP.Net AppDomain 中运行。
为此,您可以放入一个您为 CreateApplicationHost
提供的类型的公共(public)方法。
关于c# - 在桌面应用程序中呈现 ASP.NET 控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2275511/