c# - 在桌面应用程序中呈现 ASP.NET 控件?

标签 c# .net asp.net

是否可以获取一个页面对象,或者可能只是一个 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/

相关文章:

c# - 使 IIS 开始通过 Owin 管道响应请求的过程是什么?

c# - 使用模拟 Controller 上下文来测试 Controller

.net - 请求的表单例份验证失败。原因 : The ticket supplied has expired

.net - 发布类库源,不签署 key 文件,但单元测试需要访问内部类,怎么办?

asp.net - System.EntryPointNotFoundException MVC5

css - ASP :Panel re-positioning

c# - 在 C# 中执行包含 SOURCE 调用的 SQL 脚本

asp.net - .Net 对象数据源错误 : Object does not match target type

Asp.Net Core 1.1 在 key 环中找不到 key

c# - 绑定(bind) winforms datagridview rowheader