如何通过webBrowser控件将数据从C#服务器端传递到htm?

时间:2020-10-06 17:53:02

标签: javascript c# windows google-maps

我在通过javascript将字符串传递到HTML页面时遇到问题。

我有一个窗口表格, 一个HTML文件,其中包含我的Javascript和HTML代码。

在C#页面的函数中,我有一个字符串,需要通过javascript发送到HTML页面。但是我不能通过。请给我提意见。 谢谢

下面的我的C#方法代码

_siftdown()

我的HTML页面在下面

_siftup()

1 个答案:

答案 0 :(得分:0)

假设这是WinForms,因为有一个WebBrowser控件,可以通过以下最小示例完成从HTML页面调用C#代码的JavaScript:

  1. 将简单的HTML页面添加到项目的根目录,并将Properties设置为Copy to Output Directory: Copy if newer,这将确保存在一个用于测试的简单页面:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>WebForms WebBrowser Control Client</title>
</head>
<body>
    <input type="button" onclick="getLocations()" value="Call C#" />
    <script type="text/javascript">
        function getLocations() {
            var locations = window.external.SendLocations();
            alert(locations);
        }
    </script>
</body>
</html>
  1. JS函数getLocations将调用C#方法SendLocations,重要的部分是Form1类注释和设置webBrowser1.ObjectForScripting = this

using System.Windows.Forms;
using System.Security.Permissions;
using System.IO;

[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        webBrowser1.ObjectForScripting = this;

        var path = Path.GetFullPath("Client.html");
        var uri = new Uri(path);
        webBrowser1.Navigate(uri);
    }

    public string SendLocations()
    {
        return "SF, LA, NY";
    }
}
  1. 单击HTML按钮Call C#将显示一个弹出窗口,其中包含C#方法的返回值

enter image description here