javascript - 如何通过 webBrowser 控件将数据从 C# 服务器端传递到 htm?
问题描述
我在通过 javascript 将字符串传递到 HTML 页面时遇到问题。
我有一个窗口表单,一个 HTML 文件,其中有我的 Javascript 和 HTML 代码。
在 C# 页面的函数中,我有一个字符串,需要通过 javascript 发送到 HTML 页面。但我不能通过它。请给我提意见。谢谢
下面是我的 C# 方法代码
private void Form1_Load(object sender, EventArgs e)
{
Assembly assembly = Assembly.GetExecutingAssembly();
StreamReader reader = new StreamReader(assembly.GetManifestResourceStream("ProjectName.Maps.html"));
webBrowser1.DocumentText = reader.ReadToEnd();
***//pass getDefaultMap() value (str) to the javascript in Maps.html page.***
}
private string getDefaultMap()
{
string str;
str = (@"Exec SP_Map_Display @Opt=1");
return str ;
}
我的 HTML 页面如下
<body>
<script>
$(document).ready(function () {
$("#btnSubmit").click(function () {
***// Get the data from C# code str***
}
</script>
<input type="button" name="btnSubmit" value="Submit" />
<div id="dvMap">
</div>
</body>
解决方案
假设这是 WinForms,因为有一个 WebBrowser 控件,从 HTML 页面调用 C# 代码 JavaScript 可以通过这个最小示例完成:
- 将简单的 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>
- 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";
}
}
- 单击 HTML 按钮
Call C#
将显示一个弹出窗口,其中包含 C# 方法的返回值
推荐阅读
- heroku - 在 Windows 上使用 gem 安装 heroku 时出错
- docker - 创建频道失败 3 个组织
- reactjs - 运行数小时时浏览器中应用程序的内存增量
- r - 如何在 sparklyr 中使用 dplyr
- email - 无法判断我的 Postfix Mail Daemon 电子邮件报告是否被欺骗
- c# - MongoDB 如何使用 C# 驱动程序在一个查询中进行多个聚合?
- python - Python 字典列表并从特定案例创建另一个字典
- apache-nifi - 使用嵌入式 Zookeeper 将节点添加到 NIFI 集群
- python-2.7 - 如何更改我的颜色条就像 matplotlib 中的滑块一样工作
- php - 如何在 laravel 5.6 中进行自定义登录?