`
txf2004
  • 浏览: 7132736 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

动态输出javascript脚本[ClientScriptManager类]

 
阅读更多

页面显示的文字被显示在<html>和</html>之外,这不符合XHTML标准。这对于普通页面来说也许并无大碍,但是如果在频繁输出javascript脚本的网页中,可能会对网页的客户端执行效果产生影响。因为javascript脚本块在客户端调用方法之前还是客户端调用方法之后效果可能会不一样。
新建一个aspx文件,名为Home,在Page_Load事件中添加代码,如下:

输出javascript

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            Response.Write("<script lauguage="javasrcipt">alert(""+DateTime.Now.ToString()+"")</script>");
        }
    }

这样每次运行Home.aspx页面的时候都会弹出一个显示当前时间的对话框。但当查看其源代码时会发现:

查看源码:


<script lauguage="javasrcipt">alert("2010/8/13 23:16:23")</script>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
<head>
      <title></title>
</head>
<body>
    <form method="post" action="Home.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZPJPFVG/mvEj7wJdj697BaFPCzi8KIMu+OvQgQLstVMC" />
</div>
    <div>
    
    </div>
    </form>
</body>
</html>

可以看见输出的javascript代码在<html></html>标记之外。


解决办法:


在Page类中有一个ClientScript属性,它是ClientScriptManager的实例,这个类是在asp.net2.0中新增的。


ClientScriptManager有如下几个常用方法:


RegisterClientScriptBlock方法:向 Page 对象注册客户端脚本。
RegisterStartupScript方法:向 Page 对象注册启动脚本。
ClientScriptManager类通过键string和Type来唯一标识脚本。具有相同类型的键和Type的脚本识为同一脚本。


下面对Home窗体的Page_Load事件修改代码如下:

ClientScript两个方法

protected void Page_Load(object sender, EventArgs e)
    {
        if (!ClientScript.IsClientScriptBlockRegistered(this.GetType(), "ClientScriptBlock"))
        {
            ClientScript.RegisterClientScriptBlock(this.GetType(), "ClientScriptBlock", "<script lauguage="javascript">alert("ClientScriptBlock")</script>");
        }
        if(!ClientScript.IsStartupScriptRegistered(this.GetType(),"StartupScript"))
        {
            ClientScript.RegisterStartupScript(this.GetType(),"StartupScript","<script lauguage="javascript">alert("StartupScript")</script>");
        }
    }

执行该页面时,会弹出两个提示窗口,生成的HTML代码如下:

ClientScript生成HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
<head>
      <title></title>
</head>
<body>
    <form method="post" action="Home.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZPJPFVG/mvEj7wJdj697BaFPCzi8KIMu+OvQgQLstVMC" />
</div>
 
<script lauguage="javascript">alert("ClientScriptBlock")</script>
    <div>
    
    </div>
    
<script lauguage="javascript">alert("StartupScript")</script></form>
</body>
</html>

可以看出上面的两个方法输出的javascript脚本都在<form></form>标记之内,不会破环文章的结构,而且RegisterClientScriptBlock方法输出的javascript脚本代码块靠近<form>标记的开始标记,而RegisterStartupScript方法输出的javascript脚本代码块靠近<form>标记的结束标记,了解这一点对于控制动态添加的客户端脚本的时间是非常有利的。
分享到:
评论

相关推荐

    ClientScriptManager

    **ClientScriptManager** 是ASP.NET框架中的一个关键组件,它主要负责在服务器端管理客户端脚本,以便在网页中执行JavaScript代码。这个组件是Web Forms架构的一部分,它为开发人员提供了一种方便的方式来组织、注册...

    ASP.NET中常用的用来输出JS脚本的类

    为了在服务器端代码中实现这一目的,***提供了一系列辅助类来帮助开发者输出JavaScript脚本。本文将详细讨论如何使用这些类来实现常见的客户端脚本功能。 首先,为了执行JavaScript代码,我们通常需要在***页面中...

    一个基于.NET的Web Server Authoring Dynamic JavaScript

    - **ClientScriptManager**: ASP.NET中的类,用于管理客户端脚本,如注册JavaScript文件或脚本块。 - ** Razor视图引擎**: 支持在C#代码中嵌入HTML和JavaScript,使得服务器端生成动态内容更加直观。 - **AJAX和...

    封装js工具类

    利用ASP.NET的`ClientScriptManager`类的`RegisterStartupScript`方法注册JavaScript脚本块,使得脚本可以在页面加载时执行。这种方法相比于直接输出HTML `&lt;script&gt;`标签更加安全且易于管理。 #### 5. ExecuteJs ...

    asp.net:Page类和回调技术

    通过ClientScriptManager,开发者可以方便地注册JavaScript函数、添加脚本引用或检查客户端脚本是否已经存在,从而实现更灵活的客户端交互和验证功能。例如,你可以使用RegisterStartupScript方法在页面上动态插入...

    asp.net 自定义控件中的嵌入脚本图片等资源

    在自定义控件中嵌入JavaScript脚本,可以方便地为控件添加交互功能。有几种方式来实现这一点: - **内联脚本**:在控件的`RenderBeginTag`或`RenderContents`方法中直接写入`&lt;script&gt;`标签。 - **外部脚本文件**:...

    asp.net注册Javascript的方法

    在本文章中,我们看到三种方法用于注册Javascript,这些方法都是通过ClientScriptManager类的实例进行操作的,该实例通过Page类的ClientScript属性来获取。 1. IsStartupScriptRegistered方法:这个方法用于检查...

    cs中调用js函数.docx

    在C#类中定义一个`[WebMethod]`属性的静态方法,然后使用JavaScript的AJAX请求来调用。例如: ```csharp [WebMethod] public static string MyFunction() { return "返回的数据"; } ``` 在JavaScript中: ```...

    asp.net 自定义控件中的嵌入脚本图片等资源的一些总结

    在.NET框架中,我们可以使用`ClientScriptManager`类来管理这些脚本。例如,我们可以通过`RegisterStartupScript`或`RegisterClientScriptBlock`方法在页面生命周期的适当阶段注册脚本,确保它在页面加载时正确执行...

    ASP.NET AJAX深入浅出系列课程(24):UpdatePanel与服务器端脚本控件(上)

    这些控件通常继承自`System.Web.UI.ClientScriptManager`或`System.Web.UI.ScriptControl`类。服务器端脚本控件允许开发者编写既能在服务器端运行,也能在客户端JavaScript环境中执行的代码,使得开发者能够更灵活地...

    .net后台代码调用前台JS的两种方式

    上述代码通过字符串拼接创建了一个简单的JavaScript脚本,并通过Response对象输出到客户端浏览器中。当这段HTML与JavaScript代码被浏览器解析时,将执行JavaScript中的`alert('hello')`函数,弹出一个包含"hello"的...

    ASP.NET总结

    而从服务器端向客户端输出脚本时,可以使用`Response.Write`或者`ClientScriptManager`类,以更整洁的方式注入JavaScript代码。 选择使用Web服务器控件还是HTML控件取决于具体需求。如果需要复杂的交互和编程逻辑,...

    详细的ASP.NET的参考文件

    例如,可以利用ClientScriptManager类(通过Page对象的ClientScript属性访问)来管理客户端脚本,添加JavaScript等,实现页面加载、按钮点击等事件的响应。 通过学习这些基础概念,初学者可以逐步掌握如何创建、...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part1

    3.3.1 使用htmltextwriter类输出 30 3.3.2 直接输出html标签 32 3.3.3 使用服务器控件的rendercontrol方法 33 3.4 addattributestorender方法 34 3.5 createchildcontrols方法 35 3.6 inamingcontainer接口 36 ...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part2

    3.3.1 使用htmltextwriter类输出 30 3.3.2 直接输出html标签 32 3.3.3 使用服务器控件的rendercontrol方法 33 3.4 addattributestorender方法 34 3.5 createchildcontrols方法 35 3.6 inamingcontainer接口 36 ...

    用C#编写的日期选择web自定义控件

    C#代码中,我们可以利用`ClientScriptManager`类注册所需的JavaScript文件和初始化脚本。 在服务器端,我们需要处理控件的属性,比如默认日期、可选日期范围等。这些属性可以通过`[Bindable]`或`[DefaultValue]`...

    .net实现jq

    这涉及到JavaScript脚本的注册、数据交换、事件处理以及利用jQuery的API进行DOM操作和动画效果的实现。通过这种方式,开发者可以充分利用.NET的强大后端处理能力和jQuery的前端便利性,提高Web应用的性能和用户体验...

    超强的ASP.NET自定义客户端验证控件

    ASP.NET提供了`ClientScriptManager`类来管理客户端脚本。你需要注册一个客户端验证函数,并在`ControlToValidate`属性指定的控件的`OnClientClick`事件中调用这个函数。 3. **CSS样式和错误消息**: 自定义控件可能...

    通过JavaScript禁用页面上的所有“链接”

    JavaScript是一种广泛应用于网页动态效果和交互的脚本语言,与ASP.NET等服务器端技术结合,可以提供强大的前端功能。 下面是一个简单的JavaScript函数,用于遍历页面上所有的链接并禁用它们: ```javascript ...

Global site tag (gtag.js) - Google Analytics