如何从 C# 绑定到 HTML?

How to bind to HTML from C#?

我想通过 C# 在 HTML 中执行一个函数,但出现错误。

既然浏览器里面有地图,就不能少了"Navigate"这个功能

javascript

<!DOCTYPE html>
<html>
    <head>
    <title>test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="initial-scale=1.0,user-scalable=no">
    <script>
        function CallScrript(va1, va2)
        {
            alert('Val1 : ' + val1 + ' / Val2 : ' + val2);
        }
    </script>
    </head>
    <body>
    </body>
</html>

C#代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.webBrowser1.Navigate("http://1xx.xxx.xxx.xxx/test.html");

            ExecJavascript("abc", "bcd");
        }

        private void ExecJavascript(string sValue1, string sValue2)
        {
            try
            {
                webBrowser1.Document.InvokeScript("CallScript", new object[] { sValue1, sValue2 });
            }
            catch(Exception e)
            {
                MessageBox.Show(e.ToString());
            }
        }
    }
}

错误信息:

system.nullreferenceexception object reference not set to an instance of an object.

你得到 NullReferenceException 因为当你调用你的方法时 Document 属性 还不存在..

您可能需要在文档加载完成事件上有一个委托来触发您要执行的任何操作..

this.webBrowser1.NavigationCompleted += webView1_NavigationCompleted;

private void webView1_NavigationCompleted(WebView sender, WebViewControlNavigationCompletedEventArgs args)
{
    if (args.IsSuccess == true)
    {
        statusTextBlock.Text = "Navigation to " + args.Uri.ToString() + " completed successfully.";
    }
    else
    {
        statusTextBlock.Text = "Navigation to: " + args.Uri.ToString() +
                               " failed with error " + args.WebErrorStatus.ToString();
    }
}

您可以在 MSDN here 上阅读更多关于不同事件的信息。