一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](九)
前言童鞋们,大家好我是专注.NET开发者社区建设的实践者Rector。首先,为自己间隔了两个星期五再更新本系列文章找个不充分的理由:Rector最近工作,家庭的各种事务所致,希望大家谅解。本文知识要点回到本文的主题,还是关于系列文章:《一步一步创建ASP.NETMVC5程序Repository+Autofac+Automapper+SqlSugar》,本文将为大家分享的主要内容有:响应式网站首页的布局与制作文章列表的展示文章详情页面前端布局与制作响应式网站首页的布局与制作在以本文之前的系列文章的页面中,我们的网站首页以及文章列表页面都没有应用样式,本文将给大家分享首页的制作,其中包含的内容有:头部导航文章列表Bootstrap响应式布局最终的首页效果图如下:CSS样式首先,在项目[TsBlog.Frontend]中创建资源文件夹命名为:resources,在其中创建一个css样式文件夹,并新建一个样式文件,命名为:site.css,此时的目录结构如下:样式代码如下:site.csshtml,bo
DevExpress v17.2新版亮点—DevExtreme篇(三)
用户界面套包DevExpressDevExtremev17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容。本文将介绍了DevExtremev17.2的NewColorSchemes、ReactGrid(Beta)、DataGrid、DataVisualization等新功能,快来下载试用新版本!TreeList递归节点选择HTML5-JavaScriptTreeList现在支持递归节点选择:更改父节点的选定状态时,所有嵌套级别的所有子节点都会相应更新。父节点可以根据所选子节点的数量自动将其状态更改为已选择、未选中或不确定状态。UIWidgets新的FilterBuilderWidget新的HTML5-JavaScriptFilterBuilder小部件允许用户构建复杂的过滤器表达式,并且非常容易(支持无限数量的过滤条件)。它可以独立使用,也可以与List,DataGrid和TreeList小部件一起使用。TagBox-新的项目选择选项当所有可用的标签被选择或当最终用户选择
拯救你的Go代码
最近一直在参加开发公司新运营系统的引擎部分,写了很多很多代码,也逐渐产生了一些自己对此类业务的解决方案的简单想法。运营系统干的事,其实就是支持运营人员配置活动。所谓活动其实可以简单定义为:一系列条件都满足就执行某个(些)动作。对应到程序员的黑话就是:一坨ifelse之后执行某(几)个函数。ifelse说到写ifelse,大多数程序员可能都会会心一笑,毕竟不论写啥系统,代码里大部分语句还是ifelse。业务系统就是对PM的需求堆ifelse,基础服务就是对OS资源和网络问题堆ifelse。越来越多的需求造成了代码的膨胀,如何来管理这坨ifelse,就衍生出了设计模式:通过各种手段来把ifelse划分到更小的粒度。当然,还没有任何一套方法论可以解决ifelse复杂性的问题,因为ifelse反映的其实是真实业务的需求,它其实代表了业务的复杂性。就像鲁迅或者马云或者巴菲特说的:“不论用什么方法,ifelse不会凭空消失,只会从一个地方转移到另一个地方”。但是,在面对特定的场景,
XAML: 自定义控件中事件处理的最佳实践
XAML:自定义控件中事件处理的最佳实践在开发XAML(WPF/UWP)应用程序中,有时候,我们需要创建自定义控件(CustomControl)来满足实际需求。而在自定义控件中,我们一般会用到一些原生的控件(如Button、TextBox等)来辅助以完成自定义控件的功能。自定义控件并不像用户控件(UserControl)一样,使用Code-Behind(UI与逻辑在一起)技术。相反,它通过把UI与逻辑分离而将两者解耦。因此,创建一个自定义控件会产生两个文件,一个是Generic.xaml,在它里面定义其模板与样式;另一个是
C#保存文件为无BOM的utf8格式
如图所示,发现用C#的File.WriteAllLines方法,无论怎么设置,最终生成的文件都是PCutf8,也就是CRLF,用SVN进行提交的时候,显示左侧为utf8,右侧为utf8BOM文件,甚是蛋疼。最后的解决方法:File.WriteAllText(strLuaFilePath,string.Join("\n",fileContentList.ToArray()),newSystem.Text.UTF8Encoding(false));稍微普及一下常见的文件编码格式,以utf8、BOM为例BOM在文件头三位插入了“EFBBBF“同样是Utf8,在Windows、Unix、Mac下却并不相同(回车CRASCII码13—\r,换行LFASCII码10—\n,所以CRLF—\0xD\0xA)。
微软官方的.net命令行参数库
虽然现在是图形化大行其道的时代,但让程序支持命令行启动对于专业的领域还是有不少需求的。.net本身并没有内置对命令行解析的支持,我之前就写过一篇文章让.Net程序支持命令行启动介绍了几个第三方的命令行项目。今天发现了一个微软自家的命令行工具:CommandLineUtils,用它可以快速开发专业的命令行程序。这个包在Nuget上可以下载:Microsoft.Extensions.CommandLineUtils它本是微软给.netcore准备的,依赖于.netstandard库。得益于该项目开源的原因,对于.net4.5以下的用户,有人把它改造成了.net2.0环境也能使用的库:Net20.Extensions.CommandLineUtils一个简单的示例如下:staticvoidMain(string[]args){varcmd=newCommandLineApplication();varargAdd
dotnet 设计规范 · 抽象定义
严格来说,只有一个类被其他的类继承,那么这个类就是基类。在很多时候,基类的定义是提供足够的抽象和通用方法和属性、默认实现。在继承关系中,基类定义在上层抽象和底层自定义之间。他们充当抽线实现的实现帮助者,充当框架的部分。例如,处于框架的列表接口IList定义。定义一个IList在框架中具有重要的作用,可以抽象出具有数组列表的类型,有很多类都继承这个接口,如System.Collections.ObjectModel.Collection、:System.Collections.ObjectModel.KeyedCollection但是这些类都定义了属于自己的存储方法。基类有时候不适合充当自己的抽象,因为他们存在太多需要定义的内容。例如Collection
WPF 解决弹出模态窗口关闭后,主窗口不在最前
本文告诉大家如何解决这个问题,在WPF的软件,弹出一个模态窗口。使用另一个窗口在模态窗口前面。从任务栏打开模态窗口。关闭模态窗口。这时发现,主窗口会在刚才使用的另一个窗口下面。这是Windows的bug,不过从上面的描述,也许大家还不知道这个问题是什么。不过我把他放在github,所以大家可以看到这个问题具体是什么。可以运行代码:wpf-issues/ChildWindows在上面的网站有详细的视频告诉大家是如何做的就可以看到这个问题。因为模态窗口会在关闭的时候,让主窗口不在最前,所以团队不敢使用模态窗口。但是这个问题在看了Windows历史之后,才发现这个问题是Windows的问题。在窗口关闭的时候,Windows会找一个在这个窗口下方的第一个可用的窗口,激活他。因为弹出模态窗口的主窗口是被禁用的。所以在模态窗口关闭的时候,就忽略了主窗口可以激活,于是找到主窗口下方的一个可以被激活的窗口,这时激活他,于是这个被找到的窗口就在主窗口的上面。那么这个问题可以如何解决?实际上只需要在模态窗口关闭
ASP.NET没有魔法——ASP.NET MVC 模型验证
在前面的文章中介绍了用户的注册及登录功能,在注册用户时可以通过代码的形式限制用户名及密码的格式,如果不符合要求那么就无法完成操作,如下图:该功能的原理是Identity基于的EntityFramework组件在添加用户之前对用户提交数据进行校验后给出的错误信息。数据校验功能在每一个软件系统中都是非常必要的,为了避免用户输入无效或非法数据导致的系统错误,需要在数据进行处理或持久化之前对其进行验证确保数据的正确、有效性。本文将从以下几点来介绍ASP.NETMVC中的模型验证机制:●输入验证●.NET的验证简介●ASP.NETMVC的后端模型验证●ASP.NETMVC的客户端模型验证●关于ASP.NETMVC的客户端验证●自定义ASP.NETMVC中的模型验证输入验证输入验证的目的就是用来判断一个变量是否能够满足规定的要求,这里既然提到了“判断”那么使用程序来实现时最直接的方式就是通过判断语句来完成,如:但是在.Net中是否
Rider 2017. 3.1 发布,.NET 跨平台集成开发环境
本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。转载请注明:文章转载自开源中国社区[http://www.oschina.net]本文标题:Rider2017.3.1发布,.NET跨平台集成开发环境本文地址:https://www.oschina.net/news/93149/rider-2017-3-1
RavenDB 4.0 发布,.NET 文档数据库
RavenDB还有一个新的版本,RavenDB4.0.0,一个ACID文档数据库,为数据操作中的高性能业务提供完全事务性的开源NoSQL解决方案。新版本更新了许多关键功能。平台Windowsx64Windowsx86Ubuntu16.04x64树莓派Docker(Ubuntu16.04和WindowsNano服务器)性能由于代码重写(移到.NETCore),每个图层都有显着的性能改进。重新设计的索引过程高效的文件处理优化内存管理可滚动的JSON格式完整内容请查看发布主页。RavenDB是个新的.NET开源文档数据库。下面是一个简单的例子
C# SQL数据库的基础
本文来自于csdn,本文简单的介绍了SQL数据库的基础,增删改查等等,希望对您的学习有帮助。刚学了C#中写SQL数据库的增删改查,只是最基础SQL语句使用,深入地等待学习中。在操作数据库之前,要先下载SQLServer与C#连接使用,数据库的表都是放在SQLServer当中的,C#只是链接SQLServer从而操作里面的数据库表。现在开始C#代码编写:一、定义连接字符串,用来链接SQLServerstringstr_con="server=.(服务器名称一般为.);database=WordBook(数据库名称);uid=sa(服务器登录名);pwd=123(服务器密码)";二、有了链接字符串之后,开始数据库操作1、数据库查询定义了一个查询方法,用来调用:publicDataSetqueryDatabase(stringsql)//sql是查询语句{//储存数据的工具初始化DataSetds=newDataSet();//相当于链接数据库的一个工具类(连接字符串)
如何使用 Homebrew 安裝 .NET Core ?
Microsoft雖然提供了pkg安裝檔安裝.NETCoreSDK,也提供了uninstallscript移除,但在macOS世界裡,我們有更好用的Homebrew,是否能用Homebrew來管理.NETCore呢?VersionmacOSHighSierra10.13.3.NETCoreSDK2.1.4Homebrew1.5.3安裝.NETCoreSDK~$brewupdate~$brewcaskinstalldotnet-sdk更新Homebrew套件清單。使用brewcaskinstall安裝dotnet-sdk。HomebrewCask是以Homebrew為基礎,另外維護的packagerepository,第一次使用brewcask時會自動安裝使用brewcaskinstall安裝dotnet-sdkHomebrew會自動從Microsoft官網下載.NETCoreSDK輸
C#基础(七)虚函数
C#基础(七)虚函数若一个实例方法声明前带有virtual关键字,那么这个方法就是虚方法。虚方法与非虚方法的最大不同是,虚方法的实现可以由派生类所取代,这种取代是通过方法的重写实现的(以后再讲)虚方法的特点:虚方法前不允许有static,abstract,或override修饰符虚方法不能是私有的,因此不能使用private修饰符虚方法的执行:我们知道一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,而虚函数在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象实例来动态判断要调用的函数,其中那个申明时定义的类叫申明类,那个执行时实例化的类叫实例类。如:Aa=newB();其中A是申明类,B是实例类。1.当调用一个对象的函数时,系统会直接去检查这个对象申明定义的类,即申明类,看所调用的函数是否为虚函数;2.如果不是虚函数,那么它就直接执行该函数。而如果是一个虚函数,那么这个时候它就不会立刻执行该函数了,而是开始检查对象的实例类。3.在这个实例类里,他会检查这个实例类的定义中是否有实现该虚
序列不包含任何匹配元素
【参考答案】在C#中使用Lambda进行First或Single查询时,有可能会报异常:异常详细信息:System.InvalidOperationExecption:序列不包含任何元素原因是因为使用First的时候至少必须有一条数据,使用Single查询的时候查询结果必须有且只有一条数据,如果没有查到任何数据就会报异常。解决办法:使用FirstOrDefault和SingleOrDefault,如果没有数据的话,返回对应类型的默认值。【解决过程】根据上面的参考答案,将First改成FirstOrDefault后,报错未将对象引用到实例,转到First的定义,文件只读未能更改。曹帮我写了一个判断解决了问题。id的值为0,但是数据库里没有SCTId为0的数据,所以曹加了一个id>0的条件,排除了id等于小于0的可能,才能查出数据。
C# StreamReader.ReadLine统计行数的问题
要实现一个功能:从lua文件中提取字符串放到excel中,再将excel给海外同事,翻译完成后,用翻译的文本替换相应中文。整个功能并不复杂,要点有二点:1、提取字符串,一行中文如“我是中文…”,中间可能会遇到”我是中文\”xx\”我是中文”,如果用正则\”[^\”]+\”则会匹配失败,思路就是先将\”替换,查找成功后再将其替换回来,excel中有三列,分别是:key、中文、待翻译文本。2、替换lua文件中的中文,先将excel读出来放到Dictionary
部署eolinker开源版接口管理
部署eolinker开源版接口管理想找一个API接口管理的软件,为了安全性和扩展性考虑,希望是开源的,而且可以在内网独立部署。网上翻找了资料,经过一份比对之后,最终采用eolinker。过去有使用过RAP,但是感觉界面实在是太丑了。我使用的是eolinker的免费开源版(3.0的版本),官网还提供在线版,在线版的功能更加强大,但是一般来说,开源版就已经够用了,看团队的需求。eolinker官网地址:https://www.eolinker.com/#/github上源码:https://github.com/eolinker/eoLinker-API-Management-System-OS-3.X下载到本地之后,使用最新的发布版本代码我觉得官方提供的产品部署手册实在是太抽象了,可能是因为我不懂PHP吧,我是一个.net程序员。所以我把其部署在windows平台下面遇到的问题及解决方案都记录下来。这是官网部署手册以下是我部署后的运行效果:环境要求PHP5.5+/PHP7+(推荐)Mysql
.NET Core/Framework 创建委托以大幅度提高反射调用的性能
都知道反射伤性能,但不得不反射的时候又怎么办呢?当真的被问题逼迫的时候还是能找到解决办法的。为反射得到的方法创建一个委托,此后调用此委托将能够提高近乎直接调用方法本身的性能。(当然Emit也能够帮助我们显著提升性能,不过直接得到可以调用的委托不是更加方便吗?)性能对比数据▲没有什么能够比数据更有说服力(注意后面两行是有秒数的)可能我还需要解释一下那五行数据的含义:直接调用(:smirk:应该没有什么比直接调用函数本身更有性能优势的吧)做一个跟直接调用的方法功能一模一样的委托(:open_mouth:目的是看看调用委托相比调用方法本身是否有性能损失,从数据上看,损失非常小)本文重点将反射出来的方法创建一个委托,然后调用这个委托(看看吧,性能跟直接调差别也不大嘛)先反射得到方法,然后一直调用这个方法(:disappointed_relieved:终于可以看出来反射本身还是挺伤性能的了,50多倍的性能损失啊)缓存都不用,从头开始反射然后调用得到的方法(:unamused:10
(持续整理中)Visual Studio 中 C# 代码分析规则集中每一项的含义 (stylecop ruleset)
因为我希望在要求很高的库中及时发现潜在的代码问题,所以我开启了VisualStudio的代码分析。但是在修改规则的时候发现规则的名称都是在用我懂的每一个字描述我一点都不懂的概念,于是打算一个个尝试以找出每一个代码分析的实际意义。在整理的过程当中,发现要么是名称看不懂,要么是错误提示看不懂。不过两个合在一起并配合代码实验之后,基本上都能够看懂了。于是,把已经整理的部分都分享出来。正在整理中……代码分析(Microsoft.Analyzers.ManagedCodeAnalysis)设计问题
Visual Studio Code v1.20 发布,资源管理器多选
VisualStudioCodev1.20发布,以下是一些发布亮点:资源管理器多选-一次对多个文件执行操作。改进设置搜索-使用自然语言轻松搜索到正确的设置。资源管理器中的错误和警告-快速导航到代码库中的错误。Git子模块支持-对嵌套的Git存储库执行Git操作。图像预览缩放-使用鼠标,滚轮或触控板放大和缩小图像。VS代码重点领域相关部分。这里是一些进一步的更新:工作台-“智能案例”搜索,主题特定的颜色定制。编辑器-新的片段变量,Emmet改进。语言-TypeScript自动括号。调试-自动检测Node.js子进程,nvm支持。扩展-对新文件类型的扩展建议。扩展创作-自定义视图支持,新菜单分组。完整内容请查看发布主页。下载地址:https://code.visualstudio.com/