-
.NET Core采用的全新配置系统[1]: 读取配置数据
所属栏目:[asp.Net] 日期:2020-12-16 热度:98
提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置定义在这两个文件之中。到了.NET Core的时代,很多我们习以为常的东西都发生了改变[详细]
-
为什么System.Attribute的GetHashCode方法需要如此设计?
所属栏目:[asp.Net] 日期:2020-12-16 热度:86
昨天我在实现《通过扩展改善ASP.NET MVC的验证机制[使用篇]》的时候为了Attribute 的一个小问题后耗费了大半天的精力,虽然最终找到了问题的症结并解决了问题,但是我依然不知道微软如此设计的目的何在。闲话少说,我们先来演示一下我具体遇到的问题如何发生[详细]
-
T-SQL Enhancement in SQL Server 2005[上篇]
所属栏目:[asp.Net] 日期:2020-12-16 热度:104
较之前一版本, SQL Server 2005 可以说是作出了根本性的革新。对于一般的编程人员来说,最具吸引力的一大特性就是实现了对 CLR 的寄宿,使我们可以使用任意一种 .NET Programming Language 来编写 Stored Procedure 、 Function 、 Trigger 、 User Defined[详细]
-
晚绑定场景下对象属性赋值和取值可以不需要PropertyInfo
所属栏目:[asp.Net] 日期:2020-12-16 热度:186
在《一句代码实现批量数据绑定》中,我通过界面控件ID与作为数据源的实体属性名之间的映射实现了批量数据绑定。由于里面频繁涉及对属性的反射——通过反射从实体对象中获取某个属性值;通过反射为控件的某个属性赋值,所以这不是一种高效的操作方式。为了提[详细]
-
也谈事件(Event)
所属栏目:[asp.Net] 日期:2020-12-16 热度:113
最近园子里发表了一些讨论“事件(Event)”的文章,我也来凑个热闹,谈谈我对事件的一些粗浅的认识。本文不谈设计模式(观察者模式),只从运行时的角度来分析事件这个对象到底是个什么东西,它有那么神秘吗?为了更好的分析事件,本文将会编写一些例子来模[详细]
-
由for V.S. for each想到的
所属栏目:[asp.Net] 日期:2020-12-16 热度:107
一直想写一系列如何提高Performance和Scalability的文章,把我的相关经验和所知道的相关的技巧同大家分享。前一阵在园子里有一篇讨论for each 和 for两种循环那个具有更好的performance的blog,议论得沸沸扬扬。我觉得这是一个很好的切入点,我就已此作为引[详细]
-
yield在WCF中的错误使用——99%的开发人员都有可能犯的错误[下篇
所属栏目:[asp.Net] 日期:2020-12-16 热度:92
昨天写了《yield在WCF中的错误使用——99%的开发人员都有可能犯的错误[上篇]》,引起了一些讨论。关于yield关键字这个语法糖背后的原理(C#编译器将它翻译成什么)其实挺简单,虽然有时候因为误用它会导致一些问题,但是它本无过错。接下来,我们通过这篇短[详细]
-
ASP.NET Core中的依赖注入(3): 服务的注册与提供
所属栏目:[asp.Net] 日期:2020-12-16 热度:101
在采用了依赖注入的应用中,我们总是直接利用DI容器直接获取所需的服务实例,换句话说,DI容器起到了一个服务提供者的角色,它能够根据我们提供的服务描述信息提供一个可用的服务对象。ASP.NET Core中的DI容器体现为一个实现了IServiceProvider接口的对象。[详细]
-
ASP.NET MVC的Model元数据与Model模板:将”ListControl”引入AS
所属栏目:[asp.Net] 日期:2020-12-16 热度:139
我们不仅可以创建相应的模板来根据Model元数据控制种类型的数据在UI界面上的呈现方法,还可以通过一些扩展来控制Model元数据本身。在某些情况下通过这两者的结合往往可以解决很多特殊数据的呈现问题,我们接下来演示的实例就是典型的例子。[本文已经同步到《[详细]
-
[ASP.NET MVC] 利用动态注入HTML的方式来设计复杂页面
所属栏目:[asp.Net] 日期:2020-12-16 热度:94
随着最终用户对用户体验需求的不断提高,实际上我们很多情况下已经在按照桌面应用的标准来设计Web应用,甚至很多Web页面本身就体现为一个单一的页面。对于这种复杂的页面,我们在设计的时候不可以真的将所有涉及的元素通通至于某个单独的View中,将复杂页面[详细]
-
编写T4模板进行代码生成无法避免的两个话题:"Assembly Lock
所属栏目:[asp.Net] 日期:2020-12-16 热度:121
在这之前,我写了一系列关于代码生成和T4相关的文章,而我现在也试图将T4引入我们自己的开发框架。在实践中遇到了一些问题,也解决了不少问题。如果你也在进行T4相关的开发,相信你也一定会遇到这些问题。为此,特意将这些问题和解决方案与朋友们分享,希望[详细]
-
通过Knockout.js + ASP.NET Web API构建一个简单的CRUD应用
所属栏目:[asp.Net] 日期:2020-12-16 热度:189
较之面向最终消费者的网站,企业级Web应用对用户体验的要求要低一些。不过客户对“用户体验”的要求是“与日俱增”的,很多被“惯坏了”的用户已经不能忍受Postback带来的页面刷新,所以Ajax在企业级Web应用中得到了广泛的应用。企业级Web应用的一个特点是以[详细]
-
从数据到代码——基于T4的代码生成方式
所属栏目:[asp.Net] 日期:2020-12-16 热度:163
在之前写一篇文章《从数据到代码》(上篇、下篇)中,我通过基于 CodeDOM+Custom Tool 的代码生成方式实现了将一个XML表示的消息列表转换成了相应的C#代码,从而达到了 强类型编程 的目的。实际上,我们最常用的代码生成当时不是CodeDOM,而是 T4 ,这是一个[详细]
-
在Entity Framework中使用存储过程(三):逻辑删除的实现与自增
所属栏目:[asp.Net] 日期:2020-12-16 热度:180
本篇文章通过实例的方式,讨论两个在EF使用存储过程的主题:如何通过实体和存储过程的映射实现逻辑删除;对于具有自增长类型主键的数据表,在进行添加操作的时候如何将正确的值反映在实体对象上。 目录 一、基于逻辑删除的数据表和存储过程定义 二、如何过滤[详细]
-
SQL Server 2005:一个使用新创建的User的问题和解决方法
所属栏目:[asp.Net] 日期:2020-12-16 热度:141
昨天在写一个SQLXML的Sample的时候,在SQL Server 2005添加新的User的时候出了一系列的问题,觉得这是一个很Common的问题,今天我把它重现,并把相关的Screen Shot截下来,希望大家在遇到相同的问题的时候能对大家有所帮助。 Step I:以Run as Administrator[详细]
-
一句代码实现批量数据绑定[下篇]
所属栏目:[asp.Net] 日期:2020-12-16 热度:169
《上篇》主要介绍如何通过DataBinder实现批量的数据绑定,以及如何解决常见的数据绑定问题,比如数据的格式化。接下来,我们主要来谈谈DataBinder的设计,看看它是如何做到将作为数据源实体的属性值绑定到界面对应的控件上的。此外,需要特别说明一点:《上[详细]
-
如何通过自定义MessageFilter的方式利用按键方式操作控件滚动条[
所属栏目:[asp.Net] 日期:2020-12-16 热度:143
很长一段时间内,一直在做一个SCSF(Smart Client Software Factory)的项目,已经进入UAT阶段。最近,用户提出了一个要求:需要通过按键方式来控制竖直滚动条。具体来讲就是说,如果一个容器内容过多,用户可以通过按键PageUp和PageDown来控制上下的滚动。刚[详细]
-
“前.NET Core时代”如何实现跨平台代码重用 ——源文件重用
所属栏目:[asp.Net] 日期:2020-12-16 热度:113
微软在2002年推出了第一个版本的 .NET Framework,这是一个主要面向Windows 桌面(Windows Forms)和服务器(ASP.NET Web Forms)的基础框架。在此之后,PC的霸主地位不断受到其他设备的挑战甚至取代,为此微软根据设备自身的需求对.NET Framework作了相应的[详细]
-
谈谈分布式事务之三: System.Transactions事务详解[上篇]
所属栏目:[asp.Net] 日期:2020-12-16 热度:193
在.NET 1.x中,我们基本是通过ADO.NET实现对不同数据库访问的事务。.NET 2.0为了带来了全新的事务编程模式,由于所有事务组件或者类型均定义在System.Transactions程序集中的System.Transactions命名空间下,我们直接称基于此的事务为System.Transactions事[详细]
-
.NET Core采用的全新配置系统[4]: “Options模式”下各种类型的O
所属栏目:[asp.Net] 日期:2020-12-16 热度:99
旨在生成Options对象的配置绑定实现在IConfiguration接口的扩展方法Bind上。配置绑定的目标类型可以是一个简单的 基元类型 ,也可以是一个 自定义数据类型 ,还可以是一个 数组 、 集合 或者 字典 类型。通过前面的介绍我们知道ConfigurationProvider将原始[详细]
-
ASP.NET MVC下的四种验证编程方式
所属栏目:[asp.Net] 日期:2020-12-16 热度:200
ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效性,我们将针对参数的验证成为Model绑定。总地来说,我们可以采用4种不同的编程模式来进行针对绑定参数的验证。 目录[详细]
-
如何追踪每一笔记录的来龙去脉:一个完整的Audit Logging解决方
所属栏目:[asp.Net] 日期:2020-12-16 热度:194
通过第一部分的介绍,我们对这个Audit Logging解决方案的原理有了较为全面的了解,接下来我们将通过一个简单的Sample来进一步介绍如何在一个具体的应用中如何实现这样一个Audit Logging。 我们沿用在Part I提出的Order management 场景,为了简单起见,我们[详细]
-
《深入理解C# 3.x的新特性》博文系列汇总
所属栏目:[asp.Net] 日期:2020-12-16 热度:157
较之C# 2.0,C# 3.x引入了一系列新的特性,为我们编程带来很大的便利,通过有效地利用这些新特性,我们可以编写出更加简洁、优雅的程序。不过这些新特性仅仅是编译器给我们耍的小花招:在编译的时候加入一些必要的Code,使这些在C# 2.0角度看略显“残缺”的Co[详细]
-
如果没有Visual Studio 2015,我们如何创建.NET Core项目 ?
所属栏目:[asp.Net] 日期:2020-12-16 热度:200
对于.NET开发人员来说,我们已经习惯了VS这个世界上最强大的IDE,所以对他们来说,项目的创建直接利用安装到VS中相应的项目模板即可。当.NET Core跨出了Windows的围栏,正式拥抱其他平台,意味着VS已经不再是唯一的IDE。于此同时,.NET Core充分借鉴了目前非[详细]
-
ASP.NET Core的配置(1):读取配置信息
所属栏目:[asp.Net] 日期:2020-12-16 热度:132
提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置信息定义在这两个文件之中。到了.NET Core的时候,很多我们习以为常的东西都发生了[详细]
- asp.net – jQuery UI对话验证
- asp.net-mvc – 视图模型最佳实践中的ASP.NET MV
- asp.net-mvc – 单声道2.2上的ASP.NET mvc
- 将ASP.NET 5远程发布到IIS
- asp.net – 在打开silverlight项目之前,您需要安
- asp.net-mvc – 如何在ASP.NET MVC中添加路由到动
- asp.net-mvc – Context.User.Identity.Name为nu
- asp.net-mvc – 使用MVC 4和实体框架填充DropDow
- asp.net – 为什么DataBind()方法是必要的?
- ef-code-first – 如何使用LocalDB和EF,而不使用