在web.config存储自定义的对象友情链接

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介:

 web.config里:

 

 
  1. <configSections> 
  2. .. 
  3.    <section name="friendLinks" type="JiaYiSoftSite.App_Code.FriendLinks,JiaYiSoftSite,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" /> 
  4.  </configSections> 

 

 
  1. <friendLinks> 
  2.   <links> 
  3.     <add id="lnk1" href="#" text="关于本站" /> 
  4.     <add id="lnk2" href="#" text="版权声明" /> 
  5.     <add id="lnk3" href="#" text="活动公告" /> 
  6.     <add id="lnk4" href="#" text="站点地图" /> 
  7.     <add id="lnk5" href="#" text="合作伙伴" /> 
  8.   </links> 
  9. </friendLinks> 

FriendLinks.cs:

 

 
  1. namespace JiaYiSoftSite.App_Code 
  2.     //自定义友情链接元素 
  3.     public class FriendLinkElement : ConfigurationElement 
  4.     { 
  5.         public FriendLinkElement() 
  6.         { 
  7.         } 
  8.  
  9.         [ConfigurationProperty("id", IsRequired = true)] 
  10.         public string ID 
  11.         { 
  12.             get { return (string)this["id"]; } 
  13.             set { this["id"] = value; } 
  14.         } 
  15.  
  16.         //超链接地址 
  17.         [ConfigurationProperty("href", IsRequired = true)] 
  18.         public string Href 
  19.         { 
  20.             get { return (string)this["href"]; } 
  21.             set { this["href"] = value; } 
  22.         } 
  23.  
  24.         //超链接文本 
  25.         [ConfigurationProperty("text", IsRequired = true)] 
  26.         public string Text 
  27.         { 
  28.             get { return (string)this["text"]; } 
  29.             set { this["text"] = value; } 
  30.         } 
  31.     } 
  32.  
  33.     //自定义元素集合 
  34.     public class FriendLinkElementCollection : ConfigurationElementCollection 
  35.     { 
  36.         public FriendLinkElementCollection() 
  37.         { 
  38.             FriendLinkElement myElement = (FriendLinkElement)CreateNewElement(); 
  39.             Add(myElement); 
  40.         } 
  41.  
  42.         public void Add(FriendLinkElement friendLinkElement) 
  43.         { 
  44.             BaseAdd(friendLinkElement); 
  45.         } 
  46.  
  47.         protected override void BaseAdd(ConfigurationElement element) 
  48.         { 
  49.             base.BaseAdd(element, false); 
  50.         } 
  51.  
  52.         public override ConfigurationElementCollectionType CollectionType 
  53.         { 
  54.             get 
  55.             { 
  56.                 return ConfigurationElementCollectionType.AddRemoveClearMap; 
  57.             } 
  58.         } 
  59.  
  60.         protected override ConfigurationElement CreateNewElement() 
  61.         { 
  62.             return new FriendLinkElement(); 
  63.         } 
  64.  
  65.         protected override object GetElementKey(ConfigurationElement element) 
  66.         { 
  67.             return ((FriendLinkElement)element).ID; 
  68.         } 
  69.  
  70.         public FriendLinkElement this[int Index] 
  71.         { 
  72.             get 
  73.             { 
  74.                 return (FriendLinkElement)BaseGet(Index); 
  75.             } 
  76.             set 
  77.             { 
  78.                 if (BaseGet(Index) != null
  79.                 { 
  80.                     BaseRemoveAt(Index); 
  81.                 } 
  82.                 BaseAdd(Index, value); 
  83.             } 
  84.         } 
  85.  
  86.         new public FriendLinkElement this[string Name] 
  87.         { 
  88.             get 
  89.             { 
  90.                 return (FriendLinkElement)BaseGet(Name); 
  91.             } 
  92.         } 
  93.  
  94.         public int indexof(FriendLinkElement element) 
  95.         { 
  96.             return BaseIndexOf(element); 
  97.         } 
  98.  
  99.         public void Remove(FriendLinkElement link) 
  100.         { 
  101.             if (BaseIndexOf(link) >= 0) 
  102.                 BaseRemove(link.ID); 
  103.         } 
  104.  
  105.         public void RemoveAt(int index) 
  106.         { 
  107.             BaseRemoveAt(index); 
  108.         } 
  109.  
  110.         public void Remove(string name) 
  111.         { 
  112.             BaseRemove(name); 
  113.         } 
  114.  
  115.         public void Clear() 
  116.         { 
  117.             BaseClear(); 
  118.         } 
  119.     } 
  120.  
  121.     //自定义友情链接节 
  122.     class FriendLinks : ConfigurationSection 
  123.     { 
  124.         FriendLinkElement link; 
  125.         public FriendLinks() 
  126.         { 
  127.             link = new FriendLinkElement(); 
  128.         } 
  129.  
  130.         //链接节属性-集合 
  131.         [ConfigurationProperty("links", IsDefaultCollection = false)] 
  132.         [ConfigurationCollection(typeof(FriendLinkElementCollection), AddItemName = "add", ClearItemsName = "clear", RemoveItemName = "remove")] 
  133.         public FriendLinkElementCollection Links 
  134.         { 
  135.             get 
  136.             { 
  137.                 return (FriendLinkElementCollection)base["links"]; 
  138.             } 
  139.         } 
  140.     } 
  141.  

demo:读取

 

 
  1. //友情链接 
  2. FriendLinks flinks = (FriendLinks)ConfigurationManager.GetSection("friendLinks"); 
  3. ArrayList arr = new ArrayList(); 
  4. foreach (FriendLinkElement link in flinks.Links) 
  5.     if (link.ID != null && link.ID != ""
  6.     { 
  7.         arr.Add(link); 
  8.     } 
  9. rptFLinks.DataSource = arr; 
  10. rptFLinks.DataBind(); 

后台修改保存:

我这里用了个笨法子,清掉,重新添加的:

 

 
  1. Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); 
  2. if (!string.IsNullOrEmpty(Request.Form["cntLinks"])) 
  3.     FriendLinks flinks = (FriendLinks)config.GetSection("friendLinks"); 
  4.     int cnt = int.Parse(Request.Form["cntLinks"]); 
  5.     if (cnt > 0) flinks.Links.Clear(); 
  6.     for (int i = 1; i <= cnt; i++) 
  7.     { 
  8.         FriendLinkElement el = new FriendLinkElement(); 
  9.         el.ID = "lnk"+i; 
  10.         el.Href = Request.Form["lnk_url" + i]; 
  11.         el.Text = Request.Form["lnk_text" + i]; 
  12.         flinks.Links.Add(el); 
  13.     } 
  14. ); 

 

 本文转自 xcf007 51CTO博客,原文链接:http://blog.51cto.com/xcf007/566165,如需转载请自行联系原作者

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
2月前
|
存储 Web App开发 移动开发
HTML5 Web 存储详解
HTML5 Web存储提供了两种客户端数据存储机制:**Local Storage**和**Session Storage**。Local Storage用于长期存储数据,即使关闭浏览器数据也依然存在,适用于保存用户偏好设置等信息。Session Storage则在标签或窗口关闭时清除数据,适合存储临时信息。两者均提供了简单的API进行数据的存取操作,但需要注意的是,Web存储并非加密存储,不应存放敏感信息。现代浏览器普遍支持Web存储,合理利用这两种存储方式可提升Web应用的用户体验。
|
4月前
|
安全 前端开发 API
【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
|
4月前
|
前端开发 开发者
new操作符背后的秘密:揭开Web前端对象创建的神秘面纱!
【8月更文挑战第23天】在Web前端开发中,`new`操作符是创建对象实例的核心。本文以`Person`构造函数为例,通过四个步骤解析`new`操作符的工作原理:创建空对象、设置新对象原型、执行构造函数并调整`this`指向、判断并返回最终对象。了解这些有助于开发者更好地理解对象实例化过程,从而编写出更规范、易维护的代码。
40 0
|
2月前
|
存储 缓存 前端开发
Web应用中的存储方式有哪些?
本文首发于微信公众号“前端徐徐”,介绍了几种常见的前端数据存储技术:Cookie、Web Storage(包括 localStorage 和 sessionStorage)、IndexedDB、Cache Storage 和 Memory Storage。每种技术的特点和使用场景不同,适用于不同的开发需求。文章详细解释了它们的使用方法、特点和应用场景,并提供了代码示例。
111 2
Web应用中的存储方式有哪些?
|
2月前
|
存储 移动开发 缓存
HTML5 Web 存储详解
HTML5 Web 存储包括 `localStorage` 和 `sessionStorage`,前者提供持久存储且无过期时间,后者仅在会话期间有效。两者均支持键值对形式存储数据,容量约为 5-10 MB。`localStorage` 适用于用户偏好设置、登录状态保持及离线应用缓存;`sessionStorage` 则用于临时数据如表单输入。数据以字符串形式存储,可通过 `JSON` 方法处理对象。由于数据存储于本地,不适合存放敏感信息。示例代码展示了如何使用按钮将输入框内容保存至 `localStorage` 并进行清除操作。
|
2月前
|
存储 前端开发 API
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
95 0
|
4月前
|
XML JavaScript 测试技术
Web自动化测试框架(基础篇)--HTML页面元素和DOM对象
本文为Web自动化测试入门指南,介绍了HTML页面元素和DOM对象的基础知识,以及如何使用Python中的Selenium WebDriver进行元素定位、操作和等待机制,旨在帮助初学者理解Web自动化测试中的关键概念和操作技巧。
54 1
|
4月前
|
开发者 Java Spring
【绝技揭秘】掌握Vaadin数据绑定:一键同步Java对象,告别手动数据烦恼,轻松玩转Web应用开发!
【8月更文挑战第31天】Vaadin不仅是一个功能丰富的Java Web应用框架,还提供了强大的数据绑定机制,使开发者能轻松连接UI组件与后端Java对象,简化Web应用开发流程。本文通过创建一个简单的用户信息表单示例,详细介绍了如何使用Vaadin的`Binder`类实现数据绑定,包括字段与模型属性的双向绑定及数据验证。通过这个示例,开发者可以更专注于业务逻辑而非繁琐的数据同步工作,提高开发效率和应用可维护性。
88 0
|
4月前
|
JavaScript PHP 开发者
PHP中的异常处理与自定义错误处理器构建高效Web应用:Node.js与Express框架实战指南
【8月更文挑战第27天】在PHP编程世界中,异常处理和错误管理是代码健壮性的关键。本文将深入探讨PHP的异常处理机制,并指导你如何创建自定义错误处理器,以便优雅地管理运行时错误。我们将一起学习如何使用try-catch块捕获异常,以及如何通过set_error_handler函数定制错误响应。准备好让你的代码变得更加可靠,同时提供更友好的错误信息给最终用户。
|
5月前
|
开发框架 JSON 前端开发
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理

热门文章

最新文章

  • 1
    Spring Boot与Spring Cloud Config的集成
    219
  • 2
    若依修改标题和icon,在vue.config.js和.env.development进行修改
    345
  • 3
    若依修改,若依的com.ruoyi.framework.config在那?搜索文件使用ctrl+shift+f不用搜狗输入法,其他輸入法,用英文
    46
  • 4
    若依修改,若依部署在本地运行时的注意事项,后端连接了服务器,本地的vue.config.js要先改成localhost:端口号与后端匹配,部署的时候再改公网IP:端口号
    172
  • 5
    部署常用的流程,可以用后端,连接宝塔,将IP地址修改好,本地只要连接好了,在本地上前后端跑起来,前端能够跑起来,改好了config.js资料,后端修改好数据库和连接redis,本地上跑成功了,再改
    71
  • 6
    若依修改---重新部署项目注意事项,新文件初始化需要修改的地方,打包后的文件很难进行修改,如果想要不断修改项目,注意保存原项目,才可以不断修改,前端:在Vue.config.js文件中修改target
    142
  • 7
    若依修改之后,无法访问前端项目如何解决,只能访问后端的接口,我的接口8083,端不显示咋解决?在vue.config.js文件中的映射路径要跟后端匹配,到软件商店里找到Ngnix配置代理,设80不用加
    656
  • 8
    文本vitepress,如何设置背景图,如何插入背景图,如何插入logo,为了放背景图片,我们要新建pubilc的文件夹,插入logo要在config.js中进行配置,注意细节,在添加背景时,注意格式
    142
  • 9
    文本,vitepress的使用,如何使用vitevitepress没有config.js该怎么办?这里使用vitepress进行手动配置,参考只爭朝夕不負韶華的文章
    71
  • 10
    vue 配置【详解】 vue.config.js ( 含 webpack 配置 )
    75
  • 下一篇
    无影云桌面