-
ASP.NET MVC如何实现自定义验证(服务端验证+客户端验证)
所属栏目:[asp.Net] 日期:2020-12-16 热度:95
ASP.NET MVC通过Model验证帮助我们很容易的实现对数据的验证,在默认的情况下,基于ValidationAttribute的声明是验证被使用,我们只需要将相应的ValidationAttribute应用到Model的类型或者属性上即可。对于自定义验证,我们也只需要定义相应的Validation就可[详细]
-
比较一下以“反射”和“表达式”执行方法的性能差异
所属栏目:[asp.Net] 日期:2020-12-16 热度:172
由于频繁地使用反射会影响性能,所以ASP.NET MVC采用了表达式树的方式来执行目标Action方法。具体来说,ASP.NET MVC会构建一个表达式来体现针对目标Action方法的执行,并且将该表达式编译成可执行代码。编译后的可执行代码体现为一个委托对象,该委托对象会[详细]
-
解决T4模板的程序集引用的五种方案
所属栏目:[asp.Net] 日期:2020-12-16 热度:196
在众多.NET应用下的代码生成方案中,比如CodeDOM,BuildProvider,我觉得T4是最好的一种。关于T4的基本概念和模板结果,可以参考我的文章《基于T4的代码生成方式》。如果要了解T4具体的应用,则可以参考我的文章《创建代码生成器可以很简单:如何通过T4模板生[详细]
-
像TransactionScope一样使用DbTransaction
所属栏目:[asp.Net] 日期:2020-12-16 热度:128
System.Transactions.TransactionScope为了提供一种非常方便的实现分布式事务的方式,但是在某些情况下为了阻止本地事务向分布式事务提升,我们只能通过DbTransaction进行事务控制。在进行数据库操作的时候,我们经常会遇到这样的事务场景:当某个方法单独执[详细]
-
ASP.NET MVC基于标注特性的Model验证:将ValidationAttribute应
所属栏目:[asp.Net] 日期:2020-12-16 热度:101
ASP.NET MVC默认采用基于标准特性的Model验证机制,但是只有应用在Model类型及其属性上的ValidationAttribute才有效。如果我们能够将ValidationAttribute特性直接应用到参数上,我们不但可以实现简单类型(比如int、double等)数据的Model验证,还能够实现“[详细]
-
Razor Engine,实现代码生成器的又一件利器
所属栏目:[asp.Net] 日期:2020-12-16 热度:78
Razor Engine,之前仅仅是ASP.NET MVC的一种View引擎,目前已经完全成为一种可以独立使用的模版引擎,并且已经成为了CodePlex上一个开源的项目(http://razorengine.codeplex.com/)。对于使用过ASP.NET MVC Razor视图引擎的朋友们一定已经领略过它的灵活性[详细]
-
提供第三种代码生成方式——通过自定义BuildProvider为ASP.NET提
所属栏目:[asp.Net] 日期:2020-12-16 热度:164
之前写了一些关于代码生成的文章,提供了两种不同方式的代码生成解决方案,即CodeDOM+Custom Tool和T4。对于ASP.NET应用,你还有第三种选择——自定义BuildProvider。[文中涉及的源代码从这里下载] 目录 一、BuildProvider是什么? 二、将XML表示的消息转换[详细]
-
如何解决jQuery Validation针对动态添加的表单无法工作的问题?
所属栏目:[asp.Net] 日期:2020-12-16 热度:184
为了充分利用ASP.NET MVC在服务端呈现HTML的能力,在《利用动态注入HTML的方式来设计复杂页面》一文中介绍了,通过Ajax调用获取HTML来呈现复杂页面中某一部分界面的解决方案。我们知道ASP.NET MVC默认集成了jQuery Validation,但是对于通过JavaScript动态添[详细]
-
难道调用ThreadPool.QueueUserWorkItem()的时候,真是必须调用
所属栏目:[asp.Net] 日期:2020-12-16 热度:146
开门见山,下面的例子中通过调用ThreadPool.QueueUserWorkItem(WaitCallback callBack,object state)的方式实现异步调用: 1: class Program 2: { 3: static void Main( string [] args) 4: { 5: ListAction actions = new ListAction(); 6: actions.Add(()[详细]
-
ASP.NET Core应用的错误处理[4]:StatusCodePagesMiddleware中间
所属栏目:[asp.Net] 日期:2020-12-16 热度:69
StatusCodePagesMiddleware中间件与ExceptionHandlerMiddleware中间件比较类似,它们都是在后续请求处理过程中“出错”的情况下利用一个错误处理器来完成最终的请求处理与响应的任务。它们之间的差异在于对“错误”的界定上,对于ExceptionHandlerMiddleware[详细]
-
利用EntLib授权机制实现对ASP.NET页面的自动授权
所属栏目:[asp.Net] 日期:2020-12-16 热度:126
ASP.NET默认采用UrlAuthorizationModule和FileAuthorizationModule分别实现针对请求地址和物理文件的授权,但是在很多情况下我们需要额外的授权方式。Entlib提供了一种基于表达式的授权方式,它允许我们以一个表达式的方式来定义授权的规则。在新的项目中我[详细]
-
[WCF 4.0新特性] 默认绑定和行为配置
所属栏目:[asp.Net] 日期:2020-12-16 热度:81
对于传统的WCF配置系统,无论是绑定的配置还是行为(服务行为和终结点行为)都必须具有一个名称。而正是通过整个配置名称,它们才能被应用到目标对象(终结点或者服务)上。而在实际的项目开发中,绝大部分服务或者终结点都具有相同的绑定和行为,如果能够定[详细]
-
IoC在ASP.NET Web API中的应用
所属栏目:[asp.Net] 日期:2020-12-16 热度:80
控制反转(Inversion of Control,IoC),简单地说,就是应用本身不负责依赖对象的创建和维护,而交给一个外部容器来负责。这样控制权就由应用转移到了外部IoC容器,控制权就实现了所谓的反转。比如在类型A中需要使用类型B的实例,而B实例的创建并不由A来负[详细]
-
从数据到代码——通过代码生成机制实现强类型编程[上篇]
所属栏目:[asp.Net] 日期:2020-12-16 热度:175
我不知道大家对CodeDOM的代码生成机制是否熟悉,但是有一点可以确定:如果你使用过Visual Studio,你就应该体验过它带给我们在编程上的便利。随便列举三种典型的代码生成的场景:在创建强类型DataSet的时候,VS会自动根据Schema生成相应的C#或者VB.NET代码;[详细]
-
怎样让1+1=3?
所属栏目:[asp.Net] 日期:2020-12-16 热度:73
如下所示的是一个.NET程序。我们在这段程序中定义了一个作整数加法运算的Add方法,但是我希望将针对这个方法的调用转移到另一个Add2方法上,为此我定义了一个Override方法。 class Program{ static void Main() { Override(() = Add( default , default ),()[详细]
-
“协变”、“逆变”与Delegate类型转换
所属栏目:[asp.Net] 日期:2020-12-16 热度:169
我在发表了《Delegate如何进行类型转换?》之后又想到了其他一些相关的东西,除了简单地分析如何通过Emit实现EventHandler的类型转换之外,还加上关于Delegate“协变”与“逆变”的一些东西,算是对前一篇文章的完善。 目录 一、从Delegate的“协变”与“逆[详细]
-
在ASP.NET Core应用中如何设置和获取与执行环境相关的信息?
所属栏目:[asp.Net] 日期:2020-12-16 热度:170
HostingEnvironment是承载应用当前执行环境的描述,它是对所有实现了IHostingEnvironment接口的所有类型以及对应对象的统称。如下面的代码片段所示,一个HostingEnvironment对象承载的执行环境的描述信息体现在定义这个接口的6个属性上。 ApplicationName 和[详细]
-
创建代码生成器可以很简单:如何通过T4模板生成代码?[下篇]
所属栏目:[asp.Net] 日期:2020-12-16 热度:120
在《上篇》中我们通过T4模板为我们指定的数据表成功生成了我们需要的用于添加、修改和删除操作的存储过程。但是这是一种 基于单个文件 的解决方案,即我们必须为每一个生成的存储过程建立一个模板。如果我们提供一种 基于多文件 的代码生成方式,将会为编程[详细]
-
.NET Core多平台开发体验[2]: Mac OS X
所属栏目:[asp.Net] 日期:2020-12-16 热度:72
除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux(RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE等)都提供了很好的支持,我们先来体验一下使用Mac来开发.NET Core应用,在这之前我们照例先得构建我们的开发环境。 一、安装开发环境 和Windows[详细]
-
ASP.NET Core框架揭秘(持续更新中…)
所属栏目:[asp.Net] 日期:2020-12-16 热度:149
之前写了一系列关于.NET Core/ASP.NET Core的文章,但是大都是针对RC版本。到了正式的RTM,很多地方都发生了改变,所以我会将之前发布的文章针对正式版本的.NET Core 1.0进行改写。除此之外,我还会撰写一系列与此相关的文章,这些文章以ASP.NET Core为核心[详细]
-
.NET Core采用的全新配置系统[9]: 为什么针对XML的支持不够好?
所属栏目:[asp.Net] 日期:2020-12-16 热度:81
物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON、XML和INI,对应的配置源类型分别是JsonConfigurationSource、XmlConfigurationSource和IniConfigurationSource。但是对于.NET Core的配置系统来说,我们习以为常的X[详细]
-
谈谈你最熟悉的System.DateTime[下篇]
所属栏目:[asp.Net] 日期:2020-12-16 热度:86
在《谈谈你最熟悉的System.DateTime》一文中,我们从跨时区的角度剖析了我们熟悉的System.DateTime类型。如果你还是采用传统的ADO.NET编程方式,并使用DataSet作为数据实体,可能你会熟悉System.Data.DataSetDateTime这么一个类型。这个类型也是为实现跨时区[详细]
-
关于Expression Tree和IL Emit的所谓的"性能差别"
所属栏目:[asp.Net] 日期:2020-12-16 热度:170
昨天写了《三种属性操作性能比较》,有个网友写信问我一个问题:从性能上看,Expression Tree和IL Emit孰优孰劣?虽然我在回信中作了简单的回答,但不知道这个网友是否懂我的意思。反正今天呆在家里也没事儿,干脆再就这个话题再写一篇文章。 目录: 一、Expr[详细]
-
难道.NET Core到R2连中文编码都不支持吗?
所属栏目:[asp.Net] 日期:2020-12-16 热度:100
今天写了一个简单的.NET Core RC2控制台程序,发现中文显示一直是乱码。查看操作系统设置,没有问题;查看源文件编码,也没有问题;甚至查看了Console字符编码相关的注册表,依然没有发现问题。难道NET Core到了RC2,莫非连一些常用的编码都不支持吗? 现在[详细]
-
学习ASP.NET Core,你必须了解无处不在的“依赖注入”
所属栏目:[asp.Net] 日期:2020-12-16 热度:170
ASP.NET Core的核心是通过一个Server和若干注册的Middleware构成的管道,不论是管道自身的构建,还是Server和Middleware自身的实现,以及构建在这个管道的应用,都需要相应的服务提供支持,ASP.NET Core自身提供了一个DI容器来实现针对服务的注册和消费。换[详细]
- ASP.Net控件如何从其数据源读取?
- asp.net – GridView中的数据格式设置,AutoGener
- Asp.net+jquery+.ashx文件实现分页思路
- asp.net – 在C#后面的代码中实现javascript确认
- asp.net-core – 如何使用StructureMap注册表在单
- ASP.NET(MVC)Outputcache和并发请求
- asp.net-mvc – SportStore:WebUI.WindsorContr
- asp.net-mvc – 在MVC4.0中使用分页实现Category
- asp.net-mvc – 使用ASP.NET MVC和Razor的Knocko
- 在ASP.net中为按钮应用皮肤文件