You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebView2替代WebBrowser:如何加载HTML变量而非URL?

在WebView2中加载HTML字符串的解决方案

WebView2提供了两种直接加载内存中HTML字符串的方式,完全可以替代旧WebBrowser的用法:

方法1:使用NavigateToString(推荐)

这是WebView2专门为加载HTML字符串设计的API,用法简单直接。需要注意必须等WebView2的CoreWebView2实例初始化完成后再调用,否则会抛出异常。

示例代码(WPF):

// 窗口加载时提前初始化CoreWebView2
private async void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    // 初始化WebView2核心
    await webView2Control.EnsureCoreWebView2Async();
    
    // 从数据库获取的HTML内容
    string mailHtml = "<html><body><h3>邮件标题</h3><p>这是邮件正文的HTML内容</p></body></html>";
    
    // 加载HTML字符串
    await webView2Control.CoreWebView2.NavigateToString(mailHtml);
}

示例代码(WinForms):

private async void Form_Load(object sender, EventArgs e)
{
    await webView2Control.EnsureCoreWebView2Async();
    string mailHtml = "<html><body>...</body></html>";
    webView2Control.CoreWebView2.NavigateToString(mailHtml);
}

方法2:使用Data URI通过Source属性加载

如果习惯用Source属性(和旧WebBrowser的用法对齐),可以把HTML字符串转换为data:text/html格式的URI,直接赋值给Source:

string mailHtml = "<html><body>邮件正文内容</body></html>";
// 转义HTML内容并构造Data URI
string dataUri = $"data:text/html;charset=utf-8,{Uri.EscapeDataString(mailHtml)}";
webView2Control.Source = new Uri(dataUri);

注意事项

  • 优先选择NavigateToString,它更高效,且没有URI长度限制(Data URI在部分场景下有长度限制,但邮件正文一般不会触发)。
  • 必须确保CoreWebView2初始化完成,否则调用相关API会失败。可以通过EnsureCoreWebView2Async()主动触发初始化,或者监听CoreWebView2InitializationCompleted事件。

内容的提问来源于stack exchange,提问作者Angelo223

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 15:45:46