如何在ASP.NET服务器控件库中嵌入JavaScript脚本文件(转)

简介: 需求:建立一个类库TestControls,这个类库中包含若干ASP.NET服务器控件,其中有一些会调用客户端的JavaScript函数,把这些函数放入TestScript.js中。其实是很简单的需求,但是在我没有搞定之前,在网上确实找了很多文章,大家提了这样那样的问题,也提了这样那样的解决方法,但最后还是自己碰运气搞定的,唉。

需求:建立一个类库TestControls,这个类库中包含若干ASP.NET服务器控件,其中有一些会调用客户端的JavaScript函数,把这些函数放入TestScript.js中。

其实是很简单的需求,但是在我没有搞定之前,在网上确实找了很多文章,大家提了这样那样的问题,也提了这样那样的解决方法,但最后还是自己碰运气搞定的,唉。把经验分享出来,希望大家不要再走弯路。

下面演示一个例子,把上面的需求再简化一下,类库还是要建立的,里面只有一个服务器控件TestControl,这个控件没有界面,只负责把JavaScript脚本注册到网页中即可,为了快速看到效果,脚本文件里面不加函数,只放一句Alert,这样只要注册成功了,打开页面的时候就会看到亲爱的提示框,表明调试通过。

首先需要建立一个类库工程,名称为TestControls。
把默认带的Class1.cs直接删除。
新建一个类TestControl,从System.Web.UI.WebControls.WebControl继承。
新建一个JavaScript脚本TestScript,将该脚本的“生成操作”属性的值,从“内容”修改为“嵌入的资源”。
新建一个Web项目用于测试,Web项目需要在Web.config中做一些设置。

TestScript.js

a lert( " script is registered. " );


TestControl.cs

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Web.UI.WebControls;
using  System.Web;
using  System.Security.Permissions;

namespace  TestControls
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif
{
    [AspNetHostingPermission(SecurityAction.Demand, Level 
= AspNetHostingPermissionLevel.Minimal)]
    
public class TestControl : WebControl
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif    
{
        
protected override void OnInit(EventArgs e)
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
{
            
base.OnInit(e);

            
this.Page.ClientScript.RegisterClientScriptResource(this.GetType(), "TestControls.TestScript.js");
        }

    }

}


AssemblyInfo.cs(增加以下代码)

using  System.Web.UI;

[assembly: WebResource(
" TestControls.TestScript.js " " application/x-javascript " )]


Web.config

< pages >
    
< controls >
        
< add  tagPrefix ="tc"  assembly ="TestControls"  namespace ="TestControls" />
    
</ controls >
</ pages >

Default.aspx

< tc:TestControl  runat ="server"  ID ="TestControl1"   />


基本上以上几个步骤都做到了,结果是很确定的。

总结一下,有几个要点:
1、JavaScript文件必须修改为“嵌入的资源”。
2、嵌入JavaScript文件的类库,要增加WebResource的说明,可以放在单独文件中,也可以放在AssemblyInfo.cs中。
3、调用JavaScript的类,必须增加安全说明,不加就无法调用。
4、脚本文件名称,严格的按照命名空间加上文件名的格式,差一点都不可以。
5、控件的调用
本文转自:http://www.cnblogs.com/cuimingda/archive/2007/05/16/748968.html

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
2月前
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
199 3
|
3月前
|
存储 缓存
.NET 6中Startup.cs文件注入本地缓存策略与服务生命周期管理实践:AddTransient, AddScoped, AddSingleton。
记住,选择正确的服务生命周期并妥善管理它们是至关重要的,因为它们直接影响你的应用程序的性能和行为。就像一个成功的建筑工地,工具箱如果整理得当,工具选择和使用得当,工地的整体效率将会大大提高。
156 0
|
9月前
|
Linux C# Windows
.NET使用MiniWord高效生成Word文件
.NET使用MiniWord高效生成Word文件
237 12
|
10月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
201 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
10月前
Visual Studio 快速分析 .NET Dump 文件
【11月更文挑战第10天】.NET Dump 文件是在 .NET 应用程序崩溃或出现问题时生成的,记录了应用程序的状态,包括内存对象、线程栈和模块信息。通过分析这些文件,开发人员可以定位和解决内存泄漏、死锁等问题。在 Visual Studio 中,可以通过调试工具、内存分析工具和符号加载等功能来详细分析 Dump 文件。此外,还可以使用第三方工具如 WinDbg 进行更深入的分析。
537 1
|
数据采集 JavaScript 前端开发
通过ClearScript V8在.NET中执行复杂JavaScript逻辑
爬虫技术是数据采集的关键手段。针对动态加载的网页,传统HTTP请求及HTML解析难以满足需求。本文章介绍如何利用ClearScript V8库在.NET环境中执行复杂的JavaScript逻辑,以提高爬虫对动态内容的抓取效率。文章首先概述了ClearScript V8的功能,如何处理如微博这类含有大量动态加载内容的网站。通过使用代理IP、设置cookie和user-agent等方式模拟真实用户访问,确保了爬虫的稳定性和隐蔽性。提供了一个具体的C#爬虫示例,演示如何结合ClearScript V8和HTTP客户端来实现上述功能。这种方法不仅增强爬虫的灵活性,也极大地提高数据采集的效率和可靠性。
417 1
通过ClearScript V8在.NET中执行复杂JavaScript逻辑
.NET 压缩/解压文件
【9月更文挑战第5天】在 .NET 中,可利用 `System.IO.Compression` 命名空间进行文件的压缩与解压。首先引入相关命名空间,然后通过 GZipStream 类实现具体的压缩或解压功能。下面提供了压缩与解压文件的方法示例及调用方式,便于用户快速上手操作。
145 6
|
11月前
|
C# Windows
一款基于.NET开发的简易高效的文件转换器
一款基于.NET开发的简易高效的文件转换器
104 0
|
开发框架 .NET Linux
【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
106 0