BS模式下,如何通过js调用dll文件?

JavaScript021

BS模式下,如何通过js调用dll文件?,第1张

实现js调用dll中的方法也是ajax中一种实现,首先新新建类库,类库名字叫ajax好了,然后新建process.cs文件,代码如下:

using System

using System.Web

namespace ajax

{

public class process:IHttpHandler

{

public bool IsReusable

{

get { return true}

}

public void ProcessRequest(HttpContext context)

{

context.Response.CacheControl = "no-cache"

context.Response.Write(DateTime.Now)

}

}

}

然后编译为ajax.dll

接着在web.config中添加

<configuration>

//IIS6

<system.web>

<httpHandlers>

<add verb="*" type="ajax.process,ajax" path="ajax.aspx"/>

</httpHandlers>

</system.web>

//IIS7

<system.webServer>

<handlers>

<add name="ajax" verb="*" type="ajax.process,ajax" path="ajax.aspx"/>

</handlers>

</system.webServer>

</configuration>

注意IIS6还要设.aspx的映射不检查文件是否存在。

最后创建test.htm文件:

<html>

<head>

<title>调用DLL中的处理</title>

<script type="text/javascript">

function getTime() {

var xmlHttp = new XMLHttpRequest()

xmlHttp.open("GET", "/ajax.aspx", false)

xmlHttp.onreadystatechange = function () {

if (xmlHttp.readyState == 4) {

alert(xmlHttp.responseText)

}

}

xmlHttp.send(null)

}

</script>

</head>

<body>

<input type="button" value="getTime" onclick="getTime()" />

</body>

</html>

其实 js本来就是前台脚本,把js文件编译成dll供页面调用也可以实行

方法:

1.在解决方案中添加一个新项目(类库:JSControl)

2.在新项目中添加要用的JS脚本(JScript1.js)

脚本的内容:

function testAlert() {

alert("Hello!")

}

3. 改变JScript1.js的属性,Build Action为Embedded Resource(嵌入的资源)

4.在JSControl项目的AssemblyInfo.cs文件添加一行:(注意

JSControl.JScript1.js,JSControl是js所在项目的命名空间)

//定义组件内的内嵌资源的元数据属性

[assembly: System.Web.UI.WebResource("JSControl.JScript1.js", "application/x-javascript")]

注意:这边要增加个引用:System.Web.dll

5. 项目中增加一个注册客户端脚本的类:

6.在网站项目中引用JSControl项目,编译后生成

JSControl.dll

7.在要调用脚本的页面注册JSControl.dll

<%@ Register Assembly="JSControl" Namespace="JSControl"

TagPrefix="zhi" %>

8.引用脚本