返回顶部
首页 > 资讯 > 精选 >ASP.NET复杂属性和状态管理举例分析
  • 922
分享到

ASP.NET复杂属性和状态管理举例分析

2023-06-18 00:06:40 922人浏览 八月长安
摘要

本篇内容介绍了“asp.net复杂属性和状态管理举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ASP.NET组件设计之复杂属性声明/

本篇内容介绍了“asp.net复杂属性和状态管理举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

ASP.NET组件设计之复杂属性声明/持久:

所谓复杂属性,即通常不可用CLR的基本数据类型表达的属性。譬如,FontInfo,即代表字体属性,包含Bold 、Name、Size、Color等信息(通常称为子属性)。

对于复杂属性,控件在声明时候,通常采用 属性—子属性 的连字符表示复杂属性的一个子属性。

﹤sdp:TextBox id=”Textbox1” Font-Name=”Vender” Font-Size=”12pt” runat=”server” /﹥

其中的划线部分即代表了Font属性。

复杂属性的另外一种表达是,将复杂属性嵌套放于控件声明标签之中,乘坐 内部属性持久性(inner property persistence )。如:

﹤asp:DataGrid runat=”Server”﹥   ﹤HeaderStyle ForeColor=”Red” /﹥      ﹤/asp:DataGrid ﹥

复杂属性序列化/持久化的设计时支持

设计时实现是在控件之外实现的,利用元数据(attribute)来实现。对于连字符实现的子属性,经过设定特定的attribute,即可影响设计器从而实现设计时支持。

DesignerSerializationVisibility 实际上在ASP.net中是指DesignerSerializationVisibilityAttribute的属性类,通过元数据中指定,并且设为:

DesignerSerializationVisibility.Content可以让设计器知道,应当将复杂属性的内容进行序列化而不是属性本身

DesignerSerializationVisibility.Hidden       让设计器忽略属性和属性内容

DesignerSerializationVisibility.Visible       让设计器以正常方式序列化

所谓正常方式,就是以字符传、整型如果不属于这些就用字节方式持久化属性(当然对于复杂属性这相当划不来)。

NotifyParentProperty(true) 表示属性浏览器对控件得此复杂属性的修改可以通告给控件,并告知之上的各个对象(通常会给设计器应用程序),告知属性已经“脏”了。这些约定对控件设计者和设计器开发者以及ASP.NET页面的开发者都很重要。

对于标签嵌套方式的属性持久,应当采用ParseChilren(true)来指定属性的持久,设计器实现嵌套方式则应当指定PersistChildren(false)让设计器将嵌套标签转化为复杂属性的一部分(而不是内嵌的子控件)

ASP.NET组件设计之类型转换器

为了解读复杂属性的持久形式为设计运行时形式,需要对复杂属性指定类型转换器,基本目标是将持久形式解读转换为CLR支持的类型,同时也将属性的CLR类型表达为设计时、运行时的持久形式。即将Font-Size=”8pt”转换为int32 的8,将复杂属性的8持久化为Font-Size=”8pt”.

类型转换器的实现不依赖于任何用户界面功能。因此,可在 windows 窗体和 WEB 窗体中应用同一个类型转换器。

类型转换器继承自System.ComponentModel.TypeConverter。

ASP.NET组件设计之实现类型转换器的步骤:

定义一个从 System.ComponentModel.TypeConverter 派生的类。

重写 CanConvertFrom 方法,指定转换器可从中转换的类型。此方法是重载方法。

重写实现转换的 ConvertFrom 方法。此方法是重载方法。

重写 CanConvertTo 方法,指定转换器可转换为的类型。转换为字符串类型不需要重写此方法。此方法是重载方法。

重写实现转换的 ConvertTo 方法。此方法是重载方法。

重写执行验证的 IsValid 方法。此方法是重载方法。

通过TypeConverter(typeof(somecustimoziedTypeConverter))的方式确定某个属性同特定的类型转换器相关。

对于ASP.NET应用来讲,如何保持两个页面间的控件的复杂属性很重要。Control类的默认状态管理交给ViewSatte字典,而复杂属性,使用ViewState时不可能的,这必须用到IstateManager接口参与状态管理。

 Interface IstateManager   {      public bool IsTrackingViewState ; //当由类实现时,获取一个值,通过该值指示服务器控件是否正在跟踪其视图状态更改。           void LoadViewState(   object state); //当由类实现时,加载服务器控件以前保存的控件视图状态。    object SaveViewState(); //当由类实现时,将服务器控件的视图状态更改保存到 Object。    void TrackViewState();//当由类实现时,指示服务器控件跟踪其视图状态更改。   }

ASP.NET组件设计之Control,Control的ViewSatte属性实际上就是一个复杂属性,本质上是一个字典类,通过实现了IstateManager接口参与状态管理(ViewState的细节):

ViewState的数据类型是复杂属性System.Web.UI.StateBag类。实现IstateManager接口的字典。保存多项键/值对,键为字符串,值为对象,当某个对象自动添加到State把实例即ViewState中去时,自动加入一个StateItem对象,存有实际的属性值和相关的布尔标志,知识此属性(StateItem)在初始化后修改过。

在接口的TrackViewState中将此函数的值对应到StateBag的内部布尔变量,如果为真,则当StateItem添加时候(跟踪一个对象的ViewState),或者修改行为,都将StateItem标记为修改过。

SaveViewSate中,枚举项目,创建并返回两个ArrayList分别标记修改过的键和值。

LoadViewSatet执行SaveState的逆操作。

当在ViewSatte中保存属性时候,其状态会自动维护。可以在ViewState中保存任何控减灾往返传送时需要的数(而不是全部数据,从效率考虑剔除冗余数据),且任何保存在ViewState红的数据必须时通过LosFORMatter串行化的

所有复杂属性的状态保存应当实现IstateManager来将复杂属性转换为可以在ViewState中保存的简单属性,并且也可以ViewState中保存的简单属性恢复组合为复杂属性。

“ASP.NET复杂属性和状态管理举例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: ASP.NET复杂属性和状态管理举例分析

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

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

猜你喜欢
  • ASP.NET复杂属性和状态管理举例分析
    本篇内容介绍了“ASP.NET复杂属性和状态管理举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ASP.NET组件设计之复杂属性声明/...
    99+
    2023-06-18
  • vue状态管理实例分析
    这篇文章主要介绍“vue状态管理实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue状态管理实例分析”文章能帮助大家解决问题。场景:一个地图应用,有个侧边栏...
    99+
    2024-04-02
  • vuex状态管理模式的示例分析
    小编给大家分享一下vuex状态管理模式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、前言本次接受一个BI系统,要求...
    99+
    2024-04-02
  • vue中状态管理模式vuex的示例分析
    这篇文章主要介绍了vue中状态管理模式vuex的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。vuex是一个专门为vue.js设计的...
    99+
    2024-04-02
  • vuejs中vuex状态管理模式的示例分析
    这篇文章给大家分享的是有关vuejs中vuex状态管理模式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。关于vuex类的新闻最近很多,看到眼热就去查了下资料,然后扯出来...
    99+
    2024-04-02
  • Vue 2.X中状态管理vuex的示例分析
    这篇文章将为大家详细讲解有关Vue 2.X中状态管理vuex的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。示例:记住上述的顺序情况:想要改变state,只能通过...
    99+
    2024-04-02
  • React 状态管理工具优劣势示例分析
    目录什么是状态管理React 状态管理方案方案介绍方案对比Source相关建议什么是状态管理 “状态”是描述应用程序当前行为的任何数据。这可能包括诸如&ld...
    99+
    2023-01-13
    React 状态管理工具优劣势 React 状态管理工具
  • Vue 状态管理的艺术:减少应用复杂性,提升代码可维护性
    1. 什么是状态管理? 在单页应用(SPA)中,通常会涉及到大量的组件,组件之间会相互 通信和共享数据。如果缺乏有效的状态管理机制,应用程序可能会变得混乱和难以维护。状态管理的主要目标是将应用程序的状态与逻辑分离,以便于开发人员可以更轻...
    99+
    2024-02-24
    Vue.js 状态管理 Vuex Mobx Pinia useState
  • redis中状态监控和性能调优的示例分析
    这篇文章主要为大家展示了“redis中状态监控和性能调优的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“redis中状态监控和性能调优的示例分析”这篇文...
    99+
    2024-04-02
  • vue组件化开发种vuex状态管理库的示例分析
    这篇文章主要介绍vue组件化开发种vuex状态管理库的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中...
    99+
    2024-04-02
  • 为K线序列管理添加变动百分比属性,和一个简单分析
    一般K线数据,主要是记录HLOC(High,Low,Open,Close)四个值,再加上Volume交易量。在做基于K线分析时候,变动百分比也是一个经常考虑数值。这里说下增加变动百分比的属性。其实还是很简单,如果不考虑跳空的话,就是(Clo...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作