.net中activex的替代技术:winform control(二)
在上一节,我们很容易的制作了一个winform control,在这一节我们把上节的winform control嵌入到Html业中------------创建一个带有object 标签的HTML文档,该标签用来标识winform control,配置控件的虚拟路径,设置代码访问权限 。
(二)把winform control嵌入到IE中
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication2.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
< META content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
< META content="C#" name="CODE_LANGUAGE">
< META content="JavaScript" name="vs_defaultClientScript">
< META content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<script language="javascript">
function dd()
{
//hw.setAttribute("Uri","http://10.126.65.96/WebApplication2");设置控件的Uri属性
alert(hw.getAttribute("Uri"));//得到控件的Uri属性
}
</script>
</HEAD>
<BODY>
<FORM id="Form1" method="post" runat="server">
<FONT face="宋体"></FONT>
</FORM>
<P>
<OBJECT id="hw" style="WIDTH: 664px; HEIGHT: 488px" classid="http:MultiFileUpload.dll#MultiFileUpload.Demo"
VIEWASTEXT>
</OBJECT>
</P>
<P><INPUT id="ddd" type="button" οnclick="dd()" value="点击查看属性"></P>
</BODY>
</HTML>
在<object>标签的classid 属性中,我们指定第一步创建的那个组件的路径以及组件完整限定名。整个完整名称包括命名空间和整个类名。我们可以在上面的代码中清楚的看到组件名和限定名用#分割。这两部分参数组合在一起用来标识控件的唯一性。当然可以通过取名唯一id为hw来编写客户端脚本,与winform控件进行交互;要是用以前的activex控件,必须在服务器端和客户端注册安装此activex控件,现在这些工作都可以省去,不得不说这是.net的一大进步。
(三)配置虚拟路径
有了HTML页面,现在来建立一个WebApplication2的虚拟目录,实际目录在C:/Inetpub/wwwroot/WebApplication2,该目录包含了MultiFileUpload.dll和WebForm1.aspx文件。当设置虚拟目录的时候,需要注意的是设置执行权限为“纯脚本”。如果设置成“脚本和可执行脚本”的权限。那控件可能不会正常工作(我在IIS6下设置成“脚本和可执行脚本”,不正常)。你可以打开虚拟目录的属性来确认设置,设置窗口如下:
在这里因为要向服务器上传文件所以要把“写入”权限钩上。
(三)设置代码访问权限
如果不访问本地磁盘和注册表的控件,可以正确显示;由于我们的控件要访问本地磁盘文件,所以要通过“管理工具-〉.net配置向导”放大权限:
1, 打开配置工具
2, 点击“调整.net安全性”
3, 选择“对此计算机进行更改”或“仅对当前用户进行更改”都可,点击“下一步”
4, 调整本地Intranet的权限为“完全信任”,单击“下一步”
5, 单击“完成”,至此完成客户端安全性配置。
(四)访问winform控件
选择上传的文件
上传文件
通过javascript和控件交互
(五)总结
在IE中使用窗体控件时,你需要意识到他的优点和局限。主要的优点包括:
1.通过Web实现丰富的动态界面。
2..NET技术的无缝结合(winform control 和IE)。
3.优于Java applets的表现。
限制包括:
1.客户端需要是Windows操作系统
2.需要IE6.0的支持
3.客户端需要安装.NET运行时环境
4.服务器端需要是Window2000和IIS5.0或者更高版本
由于,在windows xp及以后的版本中都预装.Net framework,所以客户端的.net运行环境无需担心;但是对于每个客户端要放大权限确实是个麻烦的问题,我现在没有很好的解决方法,如果谁有的话,请赐教。