返回顶部
首页 > 资讯 > 服务器 >ASP.NET中如何为服务器控件添加客户端功能
  • 372
分享到

ASP.NET中如何为服务器控件添加客户端功能

2023-06-18 01:06:59 372人浏览 独家记忆
摘要

这篇文章主要介绍了asp.net中如何为服务器控件添加客户端功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。ASP.NET控件开发基础之服务器控件客户端功能1.减轻服务器压

这篇文章主要介绍了asp.net中如何为服务器控件添加客户端功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

ASP.NET控件开发基础之服务器控件客户端功能1.减轻服务器压力,增加用户体验

服务器功能是强大的,客户端脚本一点也不弱,现在的ajax技术和Atlas技术就是***的证明,我们总是期待UI有一个好的效果,flash动画给我们带来了很酷的效果,我们至少也可以为我们的服务器控件添加客户端脚本,一方面减少了服务器端的回传,一方面又能为控件提供非常酷的效果.我想我们都很喜欢ATLAS里面很多很酷的控件吧,而且无刷新,服务器控件与客户端脚本交互使用,那会服务器控件变的更加***.

经过上面的废话,下面我们进入正题

ASP.NET控件开发基础之服务器控件客户端功能2.简单为服务器控件添加客户端脚本

我们已经了解到服务器控件呈现后的代码仍然为html,只要你熟悉此服务器控件呈现后标签和此标签的元素,你就可以直接在服务器控件中添加

属性,事件,样式等等

简单的添加方法如下:

(1)直接在控件添加属性,如为Button控件添加简单的客户端事件

﹤asp:Button ID="Button2" runat="server" Text="Button"    onmouseover="this.value='鼠标经过'" onmouseout="this.value='鼠标离开'"  /﹥

(2)使用AttributeCollection在后台添加添加简单的客户端事件,很典型的使用如我们在删除数据的时候总要弹出一个窗口提醒用户是否删除.

Button2.Attributes.Add("onmouseover", "this.value='鼠标经过'");   Button2.Attributes.Add("onmouseout", "this.value='鼠标离开'");

ASP.NET控件开发基础之服务器控件客户端功能3.复杂客户端功能处理

先不论服务器端的功能,当客户端脚本复杂以后,我们会写在一个js文件里,可以复用,简单的脚本逻辑可以﹤script﹥标签内.我们需要封装.

Page类为我们提供了几个方法用于实现以下内容,但需要注意的是,asp.net2.0新加了一个类ClientScriptManager,专门用于管理客户端脚本的方法,使用方法为

ClientScriptManager = Page.ClientScript;

(1)注册脚本库(js文件)

ReGISterClientScriptInclude 方法

(2)发出位于页面顶部和尾部的脚本

RegisterStartupScript方法和RegisterClientScriptBlock方法

(3)确保脚本块在页面只出现一次

以Is带头Registered结尾的四个方法

(4)将控件事件处理程序与客户端提交事件关联起来

RegisterOnSubmitStatement 方法

(5)注册一个数组用来存储控件自身变量

RegisterArrayDeclaration方法

(6)注册一个隐藏域

RegisterHiddenField 方法

对于以上方法的具体使用MSDN均给出了具体的示例,刚看的时候感觉方法名比较长,接触后就会感觉简单了,对以上方法的使用一定要了解.如果你不想看MSDN的话,那么推荐看下面几篇文章,相信对你会有很大帮助.还有建议大家可以看下呈现后的HTML代码,这样会加深理解.

从 ASP.NET 服务器控件插入客户端脚本

使用客户端脚本

ASP.NET控件开发基础之服务器控件客户端功能4.了解预呈现PreRender事件

这里还是要讲控件的生命周期,在控件呈现Render方法之前,还有一个预呈现OnPreRender 方法.其周期是在OnLoad之后的MSDN给出了其解释

在呈现输出之前执行任何更新。可以保存在预呈现阶段对控件状态所做的更改,而在呈现阶段所对的更改则会丢失

总结的话,总是很简单的,要深刻理解的话,还是需要我们去试验一下,再回来体验上面这句话

先看一个简单的例子,在页面上重写了Page_PreRender,在其事件中给label1赋值,然后再定义了button事件,你会发现button事件触发后label的值还是保持不变.

ASP.NET控件开发基础之服务器控件客户端功能示例一

protected void Page_PreRender(object sender, EventArgs e)        {      Label1.Text="PreRender";        }   protected void Button1_Click(object sender, EventArgs e)  {      Label1.Text = "Click";  }

再理解上面这句话,可能我们想为什么不在呈现的时候Render方法中实现呢?如果这么做的话,那你就要属性定死了.

我们还需要说明一点,不同事件负责不同的事情,Render方法只负责呈现,不要把别的事情交给他做.

你可以在Render方法为控件添加需要呈现的属性,但其他事情则需要在呈现之前完成.整个控件的周期是有阶段,不同阶段完成不同事情.

我们这次讨论的是为服务器控件添加客户端脚本,那么我们就要在控件适当的时机调用ClientScriptManager类的方法.而这个适当的时机就是OnPreRender 方法了.

ASP.NET控件开发基础之服务器控件客户端功能5.在自定义控件中添加客户端脚本

(1)简单的实现:你可以重些OnPreRender方法,然后用AttributeCollection的Add方法,添加简单客户端脚本

protected override void OnPreRender(EventArgs e)  {     base.OnPreRender(e);     Attributes.Add("onclick","alert('" + ClickText + "');");  }

(2)复杂的实现: 这里我们用的例子还是简单点吧,效果还是按钮确认之前有一个弹出窗口,重要的是大家要了解ClientScriptManager类中几个方法的使用,以下的代码使用的是 asp.net服务器控件开发技术与实例的实例2 ,我偷懒,直接就用Page里的几个方法的.

以下列出代码

ASP.NET控件开发基础之服务器控件客户端功能示例二

/// ﹤summary﹥      /// NORMalButton 显示为一个普通样式按钮。      /// 当用户点击按钮之后,跳出一个确认对话框来确定其动作。      /// 通常多用于确认用户是否确实要进行删除/修改等类似的操作。      /// ﹤/summary﹥      [ToolboxData("﹤{0}:NormalButton runat=server﹥﹤/{0}:NormalButton﹥")]      public class NormalButton : Button      {          private string _scriptPath = "ControlClientScript/";          //构造函数          public NormalButton():base()          {              Message = "您确实要这样做吗?";          }                    定义属性#region 定义属性           [Bindable(true),           CateGory("Appearance"),           DefaultValue("您确实要这样做吗?"),          Description("自定义提示信息")]           public string Message           {              get             {                  return (string)ViewState["Message"];              }               set             {                  ViewState["Message"] = value;              }          }                    [Category("Other"),           DefaultValue("ControlClientScript/"),          Description("脚本路径")]          public String ScriptPath           {              get               {                  return _scriptPath;              }              set             {                  _scriptPath = value;              }          }           #endregion           //重写AddAttributesToRender方法          protected override void AddAttributesToRender(HtmlTextWriter output)          {              Attributes.Add("confirmationmessage",Message);              base.AddAttributesToRender(output);           }           //重写OnPreRender方法          protected override void OnPreRender( EventArgs e )           {              Page.RegisterClientScriptBlock( "WEBUIConfirmation",                "﹤script language='javascript' src='" + ScriptPath +                "WebUIConfirmation.js" + "'﹥﹤/script﹥" );              Page.RegisterArrayDeclaration("Page_Confirmations",                              "'" + ClientID + "'" );              Page.RegisterStartupScript( "WebUIConfirmation Startup",                    "﹤script language='javascript' src='" + ScriptPath +                       "WebUIConfirmationStartup.js" + "'﹥﹤/script﹥" );              base.OnPreRender(e);          }      }

主要看OnPreRender方法,只要你对其几个方法熟悉后,那剩下就是你对javaScript的掌握程度了.掌握上面几个方法可以说很容易,对javaScript的掌握那需要平时的积累了,所以要开发一个好的控件,并不容易呀.

下面再列出js文件,我对其梢有改动

WebUIConfirmationStartup.js   ConfirmationOnLoad();  WebUIConfirmation.js    //String去空格  String.prototype.Trim = function()  {   return this.replace(/(^\s*)|(\s*$)/g, "");  }   //初始化获取控件ID  function ConfirmationOnLoad() {          if (typeof(Page_Confirmations) == "undefined") return;      var i, confirmButton;      for (i = 0; i ﹤ Page_Confirmations.length; i++) {          confirmButton = Page_Confirmations[i];          if (typeof(confirmButton) == "string") {              confirmButton = document.getElementById( confirmButton );          }                  if (typeof(confirmButton.confirmationmessage ) != "undefined" ) {              if ( confirmButton.attributes["confirmationmessage"].value.Trim() != "" ) {                  confirmButton.confirmationmessage = confirmButton.attributes["confirmationmessage"].value;              } else {                  confirmButton.confirmationmessage = "您确实要这样做吗?";              }          }          ConfirmationHookupControl(confirmButton);                }  }   //添加onclick事件  function ConfirmationHookupControl( confirmButton ) {      var ev = confirmButton.onclick;      if (typeof(ev) == "function" ) {                      ev = ev.toString();          ev = ev.substring(ev.indexOf("{") + 1, ev.lastIndexOf("}"));      }      else {          ev = "";      }      var func = new Function("if ( !ConfirmationOnClick( this ) ){return false;} " + ev);      confirmButton.onclick = func;  }   //弹出确认窗口  function ConfirmationOnClick( confirmButton ) {      return window.confirm( confirmButton.confirmationmessage );  }

OK,上面的服务器控件代码还是挺简单的,你看的懂JS的话,那这个效果就没问题了.其实说真的,难点在于JavaScript脚本,呵呵.

下面再说一个例子吧,也是asp.net服务器控件开发技术与实例的例子,是一个可伸缩面板控件,其是一个集合属性和客户端脚本一起实现的效果

但此控件却并在呈现页面上用到js脚本,也没重写OnPreRender方法,而是定义了一个HTC,其关键实现是服务器控件的集合属性的实现,还有就是客户端脚本的实现,具体代码可以在后面下载.

ASP.NET控件开发基础之服务器控件客户端功能其他需要注意的问题:

客户端脚本在服务器控件中的最频繁的使用则是验证控件的使用了,你也可以自定义验证控件,但我感觉用处不是很大,如果需要你可以了解下System.Web.UI.IValidator 接口和System.Web.UI.WebControls.BaseValidator类

另外还有客户端回调,你可以了解下ICallbackEventHandler接口,具体还是看相关文章或者MSDN吧.

好了又写完一篇了,如果你刚接触这些东西的话,对你还是有帮助的,如果你已经了解了,我上面讲的对你来说就很简单了.还是想那样说,关键在于你对JavaScript的熟练程度.一些东西还需要你自己去挖掘.

感谢你能够认真阅读完这篇文章,希望小编分享的“ASP.NET中如何为服务器控件添加客户端功能”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网服务器频道,更多相关知识等着你来学习!

--结束END--

本文标题: ASP.NET中如何为服务器控件添加客户端功能

本文链接: https://lsjlt.com/news/294961.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ASP.NET中如何为服务器控件添加客户端功能
    这篇文章主要介绍了ASP.NET中如何为服务器控件添加客户端功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。ASP.NET控件开发基础之服务器控件客户端功能1.减轻服务器压...
    99+
    2023-06-18
  • nodejs如何实现TCP服务器端和客户端聊天功能
    这篇文章主要介绍了nodejs如何实现TCP服务器端和客户端聊天功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:服务器端var&...
    99+
    2024-04-02
  • C#如何实现MQTT服务端与客户端通讯功能
    这期内容当中小编将会给大家带来有关C#如何实现MQTT服务端与客户端通讯功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。关于MQTTMQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 2...
    99+
    2023-06-29
  • nodejs中如何实现socket服务端和客户端简单通信功能
    小编给大家分享一下nodejs中如何实现socket服务端和客户端简单通信功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!本文实例讲述了通过node.js的net模块实现nodejs s...
    99+
    2024-04-02
  • nodejs中socket怎么实现服务端和客户端功能
    小编给大家分享一下nodejs中socket怎么实现服务端和客户端功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体如下:使用node.js的net模块能很快的开发出基于TCP的服务端...
    99+
    2024-04-02
  • JavaScript如何在控件上添加倒计时功能
    这篇文章主要介绍了JavaScript如何在控件上添加倒计时功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一.概述在有些 报表 需求中,...
    99+
    2024-04-02
  • 微信小程序中如何添加客服按钮contact-button功能
    这篇文章给大家分享的是有关微信小程序中如何添加客服按钮contact-button功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。小程序的客服系统,是微信做的非常成功的一个功能...
    99+
    2024-04-02
  • Ruby使用eventmachine为HTTP服务器添加文件下载功能
    思路: 使用ruby eventmachine和em-http-server gem,完成一个简单的提供文件下载功能的HttpServer; 使用了EM的FileStreamer来异步发送文件,发送文件时先...
    99+
    2022-06-04
    功能 服务器 文件
  • gitlab如何在服务端添加用户权限
    随着软件开发的不断发展,版本控制管理工具越来越受到重视。GitLab是一个基于Git的Web平台,旨在帮助项目开发团队进行代码版本控制、代码管理以及协作开发。一个优秀的团队需要有一个严谨的权限管理体系,这样才能保证团队成员能够在相应权限范围...
    99+
    2023-10-22
  • 如何为MySQL服务器和SSL客户端生成证书?
    dbForge Studio for MySQL是一个在Windows平台被广泛使用的MySQL客户端,它能够使MySQL开发人员和管理人员在一个方便的环境中与他人一起完成创建和执行查询,开发和调试MySQ...
    99+
    2024-04-02
  • 如何理解Fedora DNS服务器客户端
    这篇文章将为大家详细讲解有关如何理解Fedora DNS服务器客户端,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。DNS有很多值得学习的地方,这里我们主要介绍DNS服务器,包括介绍DNS服务...
    99+
    2023-06-16
  • 云服务器如何使用ssr客户端
    使用SSR客户端可以很方便地在云服务器上创建和管理数据库。以下是一些示例: 创建新的数据库连接: 首先,在您的云服务上创建一个新的数据库连接。在连接上添加“openservers”选项,然后将“openserver”设置为您要连接的云...
    99+
    2023-10-27
    如何使用 客户端 服务器
  • 如何使用服务帐户为 Google Calendar API 设置 golang 客户端
    如何使用服务帐户为Google Calendar API设置golang客户端?这是许多开发者在使用Google Calendar API时经常遇到的问题。在这篇文章中,php小编香蕉...
    99+
    2024-02-14
  • C#中如何实现服务端与客户端通信
    这篇文章将为大家详细讲解有关C#中如何实现服务端与客户端通信,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C#服务端与客户端通信实现实例:class Server {&n...
    99+
    2023-06-17
  • 服务器端如何用mysql_real_escape_string清洁客户端数据
    本篇内容主要讲解“服务器端如何用mysql_real_escape_string清洁客户端数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“服务器端如何用mys...
    99+
    2024-04-02
  • VB.NET程序中如何扫描客户端服务
    这篇文章主要为大家展示了“VB.NET程序中如何扫描客户端服务”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET程序中如何扫描客户端服务”这篇文章吧。在大中型企业信息系统中,对客户端PC...
    99+
    2023-06-17
  • 阿里云服务器如何添加账户
    简介 在使用阿里云服务器时,为了更好地管理服务器,我们需要添加多个账户。本文将介绍如何在阿里云服务器上添加账户,并提供一些常见的账户类型和应用场景。添加账户的方法1. 使用密钥对添加账户阿里云服务器提供了密钥对的方式来添加账户,这种方式更加...
    99+
    2024-01-21
    阿里 账户 服务器
  • node.js中ws模块如何创建服务端和客户端
    小编给大家分享一下node.js中ws模块如何创建服务端和客户端,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先下载webso...
    99+
    2024-04-02
  • Vue中如何添加手机验证码组件功能
    这篇文章主要介绍Vue中如何添加手机验证码组件功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是组件:组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的...
    99+
    2024-04-02
  • 云服务器如何添加远程端口
    要添加远程端口到云服务器,可以按照以下步骤进行操作:1. 登录到云服务器的操作系统。2. 打开服务器的防火墙设置,通常使用iptab...
    99+
    2023-09-27
    云服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作