JS里调用C#后台方法如何传参数进去?

JavaScript032

JS里调用C#后台方法如何传参数进去?,第1张

通过webBrowser实现C#和javascript互调

实现步骤:

一、新建一个窗体,加入webBrowser控件

控件名:webBrowser1

二、在窗体后台代码加入如下定义

[System.Runtime.InteropServices.ComVisibleAttribute(true)]

public partial class Form1 : Form

{

...

}

三、加载网页

webBrowser1.Navigate(Application.StartupPath + "/UpDateReport.htm")

webBrowser1.ObjectForScripting = this//这句必须,不然js不能调用C#

四、调用脚本方法

/// <summary>

/// 脚本方法

/// </summary>

/// <param name="tag">JS函数名|参数1|参数2</param>

/// <returns></returns>

private object EXEC_JS(System.Windows.Forms.WebBrowser webBrowser, string tag)

{

string[] args = tag.Split('|')

if (args.Length == 1)

{

return webBrowser.Document.InvokeScript(args[0], null)

}

else

{

object[] objects = new object[args.Length - 1]

Array.Copy(args, 1, objects, 0, objects.Length)

return webBrowser.Document.InvokeScript(args[0], objects)

}

}

五、C#调用脚本方法例子,可以有返回值

//JS方法

<script language="javascript">

function js_fun(args)

{

alert("我是通过js脚本弹出的。你输入的内容是:"+args)

return "JAVASCRIPT"

}

</script>

//C#代码

object returnvalue = EXEC_JS(webBrowser1, "js_fun|参数字符串")

MessageBox.Show("js方法返回值是:" + returnvalue.ToString())

六、JS调用C#方法的例子

//C#方法

public string Test(string args)

{

return "你输入的是:"+args

}

//JS代码

<script language="javascript">

window.onload = function()

{

var CS_returnvalue= window.external.Test("aaa")

alert(CS_returnvalue)

}

</script>

计算机编程中的前端是指系统界面、ui交互等工作,而所谓后端是指数据存取、逻辑处理等等。简单理解前端就是肉眼可见的界面,而后端就是指不可见的后端服务。前台一般是指前台应用,理论上整个用户端都可以称为前台。后台则是指管理端,一般是管理员用于系统管理的。C语言既可以做前台也可以做后台。常规语言都是既可以做前台也可以做后台,不存在只做前台或只做后台之说。倒是有些语言多用于前端制作。

(1)这完全是两个不同的语言,javascript是前台前台脚本语言,c主要是用于后台

(2)javascript是面向对象,是浏览器解释的语言,c语言是面向过程!

(3)javascript的语法跟C有点象。跟vbscript可以说是很相近的,但是它们的语法不一样,vbscrit是微软开发的。之所以它们相近是从脚本的归属上说的。

javascript也分为客户端运行的跟服务器端运行的两种。只要是浏览器都支持javascript语法,不过不同的浏览器在javascript的扩展上有所不同,这就导致了一段javascript代码在IE中运行良好,但是在其他浏览器中可能会出错。 所以页面开发中增加了兼容性控制的难度,所以一段代码最好要在多个浏览器上进行测试。