嵌入Windows User Control到ASP.NET web form

实现步骤:

  1. 新建Windows User Control项目,加入自己想做的事情(一些控件、方法、属性)
  2. 新建或打开Web项目,在相应页面中加入
<object id="MyWinControl1" height="200" width="600" classid='http:WinControl1.dll#WinControl1.UserControl1' viewastext>
</object>

编译项目,并把user control的dll文件拷贝到web的根目录下,简单的便可以执行了。

为了从网页传递一些初始值给UserControl的属性,在对象中加入param

<object id="MyWinControl1" height="200" width="600" classid='http:WinControl1.dll#WinControl1.UserControl1' viewastext>
  <PARAM NAME='SomeText' VALUE='test'> </OBJECT> <!-- Property named "SomeText" in WinControl1.UserControl1 -->
</object>

为了每次修改过控件后网页中还可以正常显示,新建一个console项目去改名并拷贝

        static void Main(string[] args)
        {
            if (args.Length != 2)
                return;

            string fileName = args[0];
            string outputPath = args[1];

            Debug.WriteLine(fileName);
            Debug.WriteLine(outputPath);

            string version = Assembly.LoadFile(fileName).GetName().Version.ToString();
            outputPath = Path.Combine(outputPath, Path.GetFileName(fileName).Replace(".dll", version + ".dll"));

            File.Copy(fileName, outputPath, true);
        }

修改WindowsControl项目属性,在build events的post-build中加入:
"$(SolutionDir)Rename.exe" "$(TargetPath)" "$(SolutionDir)WinControlWeb\ "
这样便每次把项目以原有名称加版本号拷贝到web项目下,web页面code behind加入以下代码自动取得最新的dll和删掉旧的dll(web用的vb.net)

    Public Function GetFileName()Function GetFileName(ByVal controlPrefix As String)
        'delete old, only get latest file
        Dim fs As List(Of String) = New List(Of String)(Directory.GetFiles(Server.MapPath("~"), controlPrefix & "*.dll"))
        fs.Sort()
        Dim lastIndex = fs.Count - 1
        Dim result = Path.GetFileName(fs(lastIndex))
        fs.RemoveAt(lastIndex)
        For Each s As String In fs
            File.Delete(s)
        Next
        Return result
    End Function

web页面修改为

<object id="MyWinControl1" height="200" width="600" classid='http:<%= GetFileName("WinControl1") %>#WinControl1.UserControl1' viewastext>
  <PARAM NAME='SomeText' VALUE='test'> </OBJECT> <!-- Property named "SomeText" in WinControl1.UserControl1 -->
</object>

但若是想用javascript取的控件的属性或调用控件的方法,需要将控件的ComVisible设为true(在Assembly.cs文件中)

[assembly: ComVisible(true)]

以上是直接使用visual studio调试,若部署后,客户端访问需要更改本地权限,需要新建一个代码组并赋予权限,执行如下命令:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -quiet -machine -addgroup All_Code -url http://localhost/* FullTrust -name "GroupName"
将http://localhost/* 中的localhost换成实际网站或主机,指定一个GroupName
以上命令可以放到一个consle项目中去自动执行

        static void Main(string[] args)
        {
            try
            {
                Process.Start(@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe",
                              @"-quiet -machine -addgroup All_Code -url http://localhost/* FullTrust -name ""MyTest""");
                Console.WriteLine("设置成功!按任意键退出。");
                Console.Read();
            }
            catch (Exception ex)
            {
                Console.WriteLine("发生异常,请将以下错误信息发送给管理员。");
                Console.WriteLine(ex.Message);
                Console.ReadLine();
            }
            
        }

在页面中加入一个链接让用户自己去点击用来设定权限

<a href="Setup.exe">Click here to download and run the setup program.</a>

当点击链接后直接点运行,出现问题,那就用rar做一个自解压包,解压后运行Setup.exe,问题解决。

posted on 2008-07-12 18:05 Darrell Wang 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/DracoWang/archive/2008/07/12/1241506.html

嵌入Windows User Control到ASP.NET web form相关推荐

  1. ASP.NET Web Form学习

    ASP.NET Web Form学习 0.aspx与html 它如何工作? 从根本上讲,ASP.NET 页面与 HTML 完全相同. HTML 页面的扩展名是 .htm 或 .html.假如浏览器从服 ...

  2. power bi报表服务器_如何将Power BI Report Server报表嵌入ASP.Net Web应用程序

    power bi报表服务器 Every once in a while, teams from different functional areas of the business (i.e. bus ...

  3. 在Windows上安装HTTPIE(人类HTTP)-非常适合ASP.NET Web API和RESTful JSON服务

    Recently in on a post on the RESTful ASP.NET Web API framework I used curl to post JSON to an HTTP e ...

  4. asp.net web开发步骤_如何在Windows上做Python开发?微软出了官方教程

    机器之心报道 参与:路 在 Windows 上做 Python 开发太痛苦?微软最近发布了一系列官方教程,终于-- 教程地址:https://docs.microsoft.com/zh-cn/wind ...

  5. 《ASP.NET Web 站点高级编程》勘误 Part 3

    <ASP.NET Web 站点高级编程>勘误 Part 3 P201(-2)...一个以两个新闻ID作为输入, 建议:...一个以新闻ID作为输入, 原文:one with no para ...

  6. vs2005新建项目中没有ASP.NET WEB应用程序

    今天正准备使用vs 2005,发现根本打不开老师发过来的源代码Portal_Article.csproj文件,上网查了一下,好多人都说是是因为没有给vs 2005打补丁.我的新建项目里根本没有ASP. ...

  7. 【ASP.NET Web API教程】3.3 通过WPF应用程序调用Web API(C#)

    注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容. 3.3 Calling a Web API From a WPF Application ...

  8. 让WEB FORM更像WINDOWS FORM: 控制窗体事件

    [按] 你可能会误解本文标题:让WEB FORM 更像WINDOWS FORM. 你也许会把本文当作是讨论应用程序界面. 其实本文讨论的是ASP.NET表现层设计.  也许会给你一点启示:如何设计逻辑 ...

  9. Creating a Pager Control for ASP.NET以及Dino Esposito 分页组件的一个 Bug

    我在使用MSDN 上 Dino Esposito 的分页组件对DataGrid进行操作的时候,发现在 PagingMode="NonCached" 时候,最后一页的时候,会报错误: ...

最新文章

  1. I hope so 2016-Oct-10
  2. linux:apt的源
  3. 张莉python 玩转数据答案_大学mooc2020年用Python玩转数据课后答案
  4. [C++]variadic function template expansion 变元函数参数的展开规则
  5. php xampp 安装yaf,在apache中,yaf访问yaf,apache会异常退出是为何?
  6. layui totalRow 多层嵌套json_自定义 Behavior,实现嵌套滑动、平滑切换周月视图的日历...
  7. spring mvc 中自定义404页面在IE中无法显示favicon.ico问题的解决方法。
  8. 启用IIS7配置ASP运行环境的详细方法
  9. ue4 rootmotion动画、模型导入使用(注)
  10. 关于金仓数据库的java连接问题
  11. DNS、HTTP劫持的一些事
  12. 全球最牛逼的并发架构,抖音排第二,它排第一!
  13. oracle+alert删除日志,清除alert log
  14. 亚控科技的KingSCADA多个漏洞
  15. conda创建虚拟环境失败
  16. 数据结构基本概念和术语
  17. 《树莓派项目实战》第十二节 使用PCA9685驱动板控制多个舵机
  18. Vue的Watch事件-如何监听对象的属性(字段中间带有点)
  19. 【数据库】实验二~六
  20. word插入图片,嵌入型,无效果

热门文章

  1. 人脸检测(十七)--Faceness-Net
  2. python 中的坦克大战0.1版本
  3. python空格算一个字符吗_举例说明python中空格是属于字符
  4. 小白重装系统教程_小白重装系统使用教程
  5. Spark Session 与 Spark Context的区别
  6. JavaScript的apply和call方法及其区别
  7. ckeditor 触发事件(案例)
  8. 【转】mysql_fetch_row , mysql_fetch_array , mysql_fetch_assoc 的区别
  9. 鼠标的默认事件之oncontextmenu及其案例
  10. nfs+lvm解决磁盘空间扩容问题