宝哥软件园

ASP .净MVC5网站开发之网站设置(九)

编辑:宝哥软件园 来源:互联网 时间:2021-09-07

网站配置一般用来保存网站的一些设置,写在配置文件中比写在数据库中要合适一下,因为配置文件本身带有缓存,随网站启动读入缓存中,速度更快,而保存在数据库中要单独为一条记录创建一个表,结构不够清晰,而且读写也没有配置文件容易实现。这次要做的是网站的基本信息,数据保存在sitecoconfig。配置。

在14年的时候写过一篇博客《.Net MVC 网站中配置文件的读写》 ,在那篇博客中把思路和方法都已经写清楚了,这次的实现思路和上次一样,只是那次自己实现了KeyValueElement类和KeyValueElementCollection类,其实这两个类在系统。配置命名空间中都已经实现,直接使用就行。

一、网站配置类(站点配置)

1、在恩尼斯基。核心项目新建文件夹配置

2、在配置文件夹添加类站点配置。

使用系统。组件模型。数据注释;使用系统。配置;命名空间尼尼微.核心。Config{ ///summary ///网站配置类////摘要公共类站点配置:配置部分{私有静态配置属性_ property=新配置属性(字符串。空,类型为(键值配置集合),空,配置属性选项. IsDefaultCollection);[配置属性('',选项=配置属性选项IsDefaultCollection)]私有键值configurationcollection键值{ get { return(KeyValueconfiguration collection)base[_ property];}设置{ base[_property]=值;} } ///摘要///网站名称////摘要[必选(ErrorMessage=' *)][字符串长度(50,错误消息='最多{1}个字符)][显示(名称='网站名称)]公共字符串SiteName { get { return键值[' SiteName ']==null?字符串空:键值['SiteName'].价值;}设置{ keyValues['SiteName'].价值=价值;} } ///摘要///网站标题////摘要[必选(ErrorMessage=' *)][字符串长度(50,错误消息='最多{1}个字符)][显示(名称='网站标题)]公共字符串网站标题{ get { return键值['网站标题']==null?字符串空:键值['SiteTitle'].价值;}设置{ keyValues['SiteTitle'].价值=价值;} } ///摘要///网站地址////摘要[DataType(数据类型.网址][必需(错误消息=' * '][字符串长度(500,错误消息='最多{1}个字符)][显示(名称='网站地址)]公共字符串site URl { get { return KeyValues[' SiteURl ']==null?http://' :键值[' SiteURl '].价值;}设置{ keyValues['SiteUrl'].价值=价值;} } ///summary ///Meta关键词////摘要[DataType(数据类型。多列文本)][字符串长度(500,错误消息='最多{1}个字符)][显示(名称='Meta关键词)]公共字符串meta关键字{ get { return键值[' meta关键字']==null?字符串空:键值['元关键字']。价值;}设置{键值['元关键词'].价值=价值;} } ///summary ///Meta描述////摘要[DataType(数据类型。多列文本)][字符串长度(1000,错误消息='最多{1}个字符)][显示(名称='Meta描述)]公共字符串meta description { get { return key values[' meta description ']==null?字符串。空:键值['元描述']。价值;}设置{键值['元描述'].价值=价值;} } ///摘要///版权信息////摘要[DataType(数据类型。多列文本)][字符串长度(1000,错误消息='最多{1}个字符)][显示(名称='版权信息)]公共字符串版权{ get {返回键值['版权']==null?尼尼微版权所有:键值['版权所有']。价值;}设置{ keyValues['版权']。价值=价值;} } }}Siteconfig类继承自配置部分,继承自这个类是才能读写配置节。

在类中声明一个配置元素的子元素私有静态配置属性,子元素的配置实体类型是KeyValueConfigurationCollection(键/值集合)。

复制代码代码如下:私有静态配置属性=新配置属性(字符串。空,类型为(键值配置集合),空,配置属性选项. IsDefaultCollection);然后徐再在类中声明一个属性私有键值配置集合键值。利用键值获取、设置配置节键/值集合。

[配置属性('',选项=配置属性选项IsDefaultCollection)]私有键值configurationcollection键值{ get { return(KeyValueconfiguration collection)base[_ property];}设置{ base[_property]=值;} } 然后就可以使用键值["名称"]获取设置具体配置了。

///摘要///网站名称////摘要[必选(ErrorMessage=' *)][字符串长度(50,错误消息='最多{1}个字符)][显示(名称='网站名称)]公共字符串SiteName { get { return键值[' SiteName ']==null?字符串空:键值['SiteName'].价值;}设置{ keyValues['SiteName'].价值=价值;} }看起来是不是跟其他模型类差不多,知识得到;设置;有所不同。

二、设置配置文件的类型和路径

打开Nniesky.web项目的网络。配置文件,找到配置部分,然后添加sitecoconfig配置节

红框部分为添加类型,说明了配置节的名称和类型,注意红线部分,restartOnExternalChanges设为'假,如果不设置,配置文件修改后会重启网站。

在配置文件的结尾/配置添加配置文件的路径

图中红框部分为添加内容,指明sitecoconfig的位置文件在网站目录配置文件夹下名为sitecoconfig。配置的文件。

然后在项目中添加配置文件夹,然后添加名为sitecoconfig。配置的配置文件。

?可扩展标记语言版本='1.0 '编码='utf-8 '?siteconfig add key=' SiteName ' value=' Ninesky '/add key=' SiteTitle ' value=' 1133 '/add key=' SiteURl ' value=' http://mzwhj。cnblogs。com '/add key=' MetaKeywords ' value='关键词,'/add key=' meta description ' value='描述/add key='版权'值='尼尼微'版权所有a11/a '/SiteConfig配置文件中的键名与sitecoconfig的属性名对应。

三、控制器和视图1、配置文件的读取

在尼尼微。网络/区域/控制/控制器【右键】-添加-控制器,输入控制器名配置控制器。

在控制其中添加方法sitecoconfig方法

///摘要///站点设置////summary////返回/返回公共操作结果site config(){ site config _ site config=System .网络。配置。webconfigurationmanager。openwebconfiguration(' ~ ').GetSection('SiteConfig ')作为尼尼微.核心。配置。sitecoconfig返回视图(_ Siteconfig);}代码很简单,利用网络配置管理器的GetSection方法就将配置信息读出来了。

右键添加视图,将个属性显示出来。

@模型尼尼微核心。配置。Siteconfig @ { viewpag .Title='站点设置;}@section SideNav{@Html .partial(' SideNavPartialView ')} ol class='面包屑' lispan class=' glyphicon glyphicon-home '/span @ Html .ActionLink('首页、“索引”、“主页”)/li li@Html .ActionLink('系统设置,' Index')/li li class='active '站点设置/Li/ol @使用(Html .begin inform()){ @ Html .antiforyToken()div class=' form-horizontal ' @ Html .ValidationSummary(true,",new { @ class=' text-danger ' })div class=' form-group ' @ Html .标签(型号=型号.SiteName,HTMl Attributes s 3360 new { @ class=' control-label col-MD-2 ' })div class=' col-MD-10 ' @ Html .编辑(模型=模型.SiteName,new { HTMl Attributes=new { @ class=' form-control ' } })@ Html .ValidationMessageFor(model=model .SiteName ' ',new { @ class=' text-danger ' })/div/div class=' form-group ' @ Html .标签(型号=型号.SiteTitle,HTMl属性3360 new { @ class=' control-label col-MD-2 ' })div class=' col-MD-10 ' @ Html .编辑(模型=模型.SiteTitle,new { HTMl Attributes=new { @ class=' form-control ' } })@ Html .ValidationMessageFor(model=model .SiteTitle“”,new { @ class=' text-danger ' })/div/div class=' form-group ' @ Html .标签(型号=型号.SiteUrl,HTMl Attributes s 3360 new { @ class=' control-label col-MD-2 ' })div class=' col-MD-10 ' @ Html .编辑(模型=模型.SiteUrl,new { HTMl Attributes=new { @ class=' form-control ' } })@ Html .ValidationMessageFor(model=model .SiteUrl ' ',new { @ class=' text-danger ' })/div/div class=' form-group ' @ Html .标签(型号=型号.MetaKeywords,HTMl属性3360 new { @ class=' control-label col-MD-2 ' })div class=' col-MD-10 ' @ Html .编辑(模型=模型.MetaKeywords,new { HTMl Attributes=new { @ class=' form-control ' } })@ Html .ValidationMessageFor(model=model .MetaKeywords“”,new { @ class=' text-danger ' })/div/div class=' form-group ' @ Html .标签(型号=型号.MetaDescription,HTMl属性3360 new { @ class=' control-label col-MD-2 ' })div class=' col-MD-10 ' @ Html .编辑(模型=模型.MetaDescription,new { HTMl Attributes=new { @ class=' form-control ' } })@ Html .ValidationMessageFor(model=model .MetaDescription“”,new { @ class=' text-danger ' })/div/div class=' form-group ' @ Html .标签(型号=型号.版权所有,HTMl Attributes s 3360 new { @ class=' control-label col-MD-2 ' })div class=' col-MD-10 ' @ Html .编辑(模型=模型.版权所有,new { HTMl Attributes=new { @ class=' form-control ' } })@ Html .ValidationMessageFor(model=model .版权所有,',new { @ class=' text-danger ' })/div/div class=' form-group ' div class=' col-MD-offset-2 col-MD-10 '输入类型='submit '值='保存=' BTN BTN-默认'/div/div/div } 2,配置文件的保存。

在控制器中再添加一个[HttpSet]类型的sitecoconfig方法。

[ValidateInput(false)]web。配置。webconfigurationmanager。openwebconfiguration(' ~ ').GetSection('SiteConfig ')作为尼尼微.核心。配置。SiteConfigif(TryUpdateModelSiteConfig(_ siteconfig)){ _ siteconfig .当前配置。保存();返回视图('提示,新的提示(){标题='修改成功,消息='成功修改了网站设置,button=new ListString { ' a href=' URl .操作(“SiteConfig”)“”类=“BTNBTN-默认值”返回/a ' } });}其他返回视图(_ Siteconfig);} }代码也非常简单,与读取配置文件相同,使用网络配置管理器的GetSection方法将配置信息读入_siteConfig中,然后用TryUpdateModelSiteConfig(_ siteconfig)绑定视图提交过来的信息。

如果绑定成功,利用_siteConfig .当前配置。保存()方法保存配置信息(这个方法继承自配置部分,不用自己实现)。

效果如下图

=================================================代码下载:http://吉。奥希娜。网/九霄/九霄下载方法:http://www .cn博客。com/mzwhj/p/5729848。超文本标记语言

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+