C# winforms 应用中的动态网页

本文关键字:动态 网页 winforms 应用 | 更新日期: 2023-09-27 17:48:54

我有一个winforms应用程序,我想添加一些新功能。

理想情况下,我将有一个具有嵌入式浏览器控件的新窗体。我希望浏览器中的页面从应用程序本身"提供"(而不是远程服务器)。

页面将根据应用程序内的数据动态创建。

另外,我如何满足对CSS,Javascript和图像文件等资产的引用。理想情况下,这些也需要由应用程序处理。

我该怎么做?

C# winforms 应用中的动态网页

我在应用程序中使用这种技术。 我托管了一个WebBrowser,我按如下方式填充它:

public void DisplayHtml(HtmlGenerator gen)
{
        webBrowser.DocumentText = gen.GenerateHtmlString());
}

使用这种方法,我不必在我的文件系统上实际生成包含 HTML 内容的文件。

使用 WebBrowser 控件。

可以将 DocumentText 属性设置为要显示的 HTML。(感谢谢苗诺夫@Anton)。

或者,可以从应用程序创建的文件向其提供本地文件 URL。

在我的测试管理工具(这个工具,如果允许我添加链接)中,我编写了自己的"迷你ASP",方法是将 HTML 页面包含 C# 代码,然后通过将页面转换为 C#、编译代码然后执行它来动态处理它们。

请注意,这可能会填充应用程序域,因为您无法卸载动态加载的脚本代码。

此类 HTML 文件的摘录如下所示:

<div id="title">
    <img src="../_Shared/images/32x32/component_blue_view.png" />
    <h1>Test case &quot;[$=tc.Title$]&quot; - Details</h1>
</div>

在这里,[$=$]<%=%> 的等价物。

在另一个项目中,我用Microsoft VBScript解释器做了类似的事情;我没有将代码编译为C#,而是将其编译为VBScript,然后由Microsoft脚本主机的VBScript引擎执行。

要处理图像和 CSS 等资源,您只需发布自己的集成 Web 服务器即可。通过包含这个 CodePlex 项目,我成功地在几个项目中做到了这一点。