代码改变世界

随笔分类 - [03]ASP.NET

解读ASP.NET 5 & MVC6系列(17):MVC中的其他新特性

2015-06-03 09:22 by 汤姆大叔, 18586 阅读, 收藏, 编辑
摘要:#(GlobalImport全局导入功能)默认新建立的MVC程序中,在Views目录下,新增加了一个`_GlobalImport.cshtml`文件和`_ViewStart.cshtml`平级,该文件的功能类似于之前Views目录下的web.config文件,之前我们在该文件中经常设置全局导入的命名... 阅读全文

解读ASP.NET 5 & MVC6系列(16):自定义View视图文件查找逻辑

2015-06-02 09:07 by 汤姆大叔, 11573 阅读, 收藏, 编辑
摘要:之前MVC5和之前的版本中,我们要想对View文件的路径进行控制的话,则必须要对`IViewEngine`接口的`FindPartialView`或`FindView`方法进行重写,所有的视图引擎都继承于该`IViewEngine`接口,比如默认的`RazorViewEngine`。但新版本MVC6... 阅读全文

解读ASP.NET 5 & MVC6系列(15):MvcOptions配置

2015-06-01 08:58 by 汤姆大叔, 7611 阅读, 收藏, 编辑
摘要:#程序模型处理 IApplicationModelConvention在`MvcOptions`的实例对象上,有一个`ApplicationModelConventions`属性(类型是:`List`),该属性`IApplicationModelConvention`类型的接口集合,用于处理应用模型... 阅读全文

解读ASP.NET 5 & MVC6系列(14):View Component

2015-05-29 09:18 by 汤姆大叔, 11192 阅读, 收藏, 编辑
摘要:在之前的MVC中,我们经常需要类似一种小部件的功能,通常我们都是使用Partial View来实现,因为MVC中没有类似Web Forms中的WebControl的功能。但在MVC6中,这一功能得到了极大的改善。新版MVC6中,提供了一种叫做View Component的功能。你可以将View Co... 阅读全文

解读ASP.NET 5 & MVC6系列(13):TagHelper

2015-05-28 09:22 by 汤姆大叔, 13892 阅读, 收藏, 编辑
摘要:在新版的MVC6中,微软提供了强大的TagHelper功能,以便让我们摆脱如下的臃肿代码:```csharp@Html.LabelFor(model => model.FullName)@Html.EditFor(model => model.FullName)@Html.ValidationMes... 阅读全文

解读ASP.NET 5 & MVC6系列(12):基于Lamda表达式的强类型Routing实现

2015-05-27 09:05 by 汤姆大叔, 7813 阅读, 收藏, 编辑
摘要:前面的深入理解Routing章节,我们讲到了在MVC中,除了使用默认的ASP.NET 5的路由注册方式,还可以使用基于Attribute的特性(Route和HttpXXX系列方法)来定义。本章,我们将讲述一种基于Lambda表达式的强类型类型。这种方式的基本使用示例如下:```csharpservi... 阅读全文

解读ASP.NET 5 & MVC6系列(11):Routing路由

2015-05-26 09:07 by 汤姆大叔, 18659 阅读, 收藏, 编辑
摘要:#新版Routing功能介绍在ASP.NET 5和MVC6中,Routing功能被全部重写了,虽然用法有些类似,但和之前的Routing原理完全不太一样了,该Routing框架不仅可以支持MVC和Web API,还支持一般的ASP.NET5程序。新版的改变有如下几个部分。首先,Routing系统是基... 阅读全文

解读ASP.NET 5 & MVC6系列(10):Controller与Action

2015-05-25 09:11 by 汤姆大叔, 14870 阅读, 收藏, 编辑
摘要:我们知道在MVC5和之前的版本,两个框架的生命周期是不一样的,在新版MVC6中,MVC Controller/Web API Controller已经合二为一了,本章我们主要讲解Controller和Action的定义与使用,以及在MVC框架中,如何根据路由查询相应的Controller和Actio... 阅读全文

解读ASP.NET 5 & MVC6系列(9):日志框架

2015-05-22 09:00 by 汤姆大叔, 18020 阅读, 收藏, 编辑
摘要:#框架介绍在之前的.NET中,微软还没有提供过像样的日志框架,目前能用的一些框架比如Log4Net、NLog、CommonLogging使用起来多多少少都有些费劲,和java的SLF4J根本无法相比。但在新版的ASP.NET5中,可谓是牛气冲天,微软提供的Microsoft.Framework.Lo... 阅读全文

解读ASP.NET 5 & MVC6系列(8):Session与Caching

2015-05-21 09:08 by 汤姆大叔, 23701 阅读, 收藏, 编辑
摘要:在之前的版本中,Session存在于System.Web中,新版ASP.NET 5中由于不在依赖于System.Web.dll库了,所以相应的,Session也就成了ASP.NET 5中一个可配置的模块(middleware)了。#配置启用SessionASP.NET 5中的Session模块存在于... 阅读全文

解读ASP.NET 5 & MVC6系列(7):依赖注入

2015-05-20 09:10 by 汤姆大叔, 41837 阅读, 收藏, 编辑
摘要:在前面的章节(Middleware章节)中,我们提到了依赖注入功能(Dependency Injection),ASP.NET 5正式将依赖注入进行了全功能的实现,以便开发人员能够开发更具弹性的组件程序,MVC6也利用了依赖注入的功能重新对Controller和View的服务注入功能进行了重新设计;... 阅读全文

解读ASP.NET 5 & MVC6系列(6):Middleware详解

2015-05-19 09:16 by 汤姆大叔, 15888 阅读, 收藏, 编辑
摘要:在第1章项目结构分析中,我们提到`Startup.cs`作为整个程序的入口点,等同于传统的`Global.asax`文件,即:用于初始化系统级的信息(例如,MVC中的路由配置)。本章我们就来一一分析,在这里如何初始化这些系统级的信息。#新旧版本之间的Pipeline区别ASP.NET 5和之前版本的... 阅读全文

解读ASP.NET 5 & MVC6系列(5):Configuration配置信息管理

2015-05-18 07:44 by 汤姆大叔, 18275 阅读, 收藏, 编辑
摘要:在前面的章节中,我们知道新版的MVC程序抛弃了原来的web.config文件机制,取而代替的是config.json,今天我们就来深入研究一下配置文件的相关内容。#基本用法新版的配置信息机制在Microsoft.Framework.ConfigurationModel命名空间下进行了重写,重写以后不... 阅读全文

解读ASP.NET 5 & MVC6系列(4):核心技术与环境配置

2015-05-17 19:21 by 汤姆大叔, 20410 阅读, 收藏, 编辑
摘要:asp.net 5是下一代的asp.net,该版本进行了全部重写以适用于跨平台,新新版本中,微软引入了如下工具与命令:DNVM、DNX、DNU。**DNVM**(.NET Version Manager):由于要实现跨平台的目录,微软提供了DNVM功能,DNVM是ASP.NET最底层的内容,他是一组... 阅读全文

解读ASP.NET 5 & MVC6系列(3):项目发布与部署

2015-05-15 09:14 by 汤姆大叔, 25309 阅读, 收藏, 编辑
摘要:本章我们将讲解ASP.NET5项目发布部署相关的内容,示例项目以我们前一章创建的BookStore项目为例。#发布前的设置由于新版ASP.NET5支持多版本DNX运行环境的发布和部署,所以在部署之前,我们需要设定部署的目标DNX(即之前的KRE)。步骤:右键BookStore项目->属性->Appl... 阅读全文

解读ASP.NET 5 & MVC6系列(2):初识项目

2015-05-14 09:08 by 汤姆大叔, 36036 阅读, 收藏, 编辑
摘要:#初识项目打开VS2015,创建Web项目,选择ASP.NET Web Application,在弹出的窗口里选择ASP.NET 5 Website模板创建项目,图示如下:![](http://images.cnitblog.com/blog2015/349491/201505/1409071357... 阅读全文

解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介

2015-05-13 09:14 by 汤姆大叔, 51872 阅读, 收藏, 编辑
摘要:#ASP.NET 5简介ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦。为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一个.NET Core的东西。 在.NET Core里一切都是可配置的,包括Session、MVC等功... 阅读全文

解读ASP.NET 5 & MVC6系列

2015-05-13 07:37 by 汤姆大叔, 69575 阅读, 收藏, 编辑
摘要:本系列的大部分内容来自于微软源码的阅读和网络,大部分测试代码都是基于VS RC版本进行测试的。[解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介][1][解读ASP.NET 5 & MVC6系列(2):初识项目][2][解读ASP.NET 5 & MVC6系列(3):项目发布与... 阅读全文

MVC之前的那点事儿系列(1):进入CLR

2014-05-28 13:12 by 汤姆大叔, 14042 阅读, 收藏, 编辑
摘要:MVC之前的那点事儿系列,是笔者在2012年初阅读MVC3源码的时候整理的,主要讲述的是从HTTP请求道进入MVCHandler之前的内容,包括了原创,翻译,转载,整理等各类型文章,当然也参考了博客园多位大牛的文章,对此表示感谢,这次有时间贴出来,希望对大家有用。主要内容本文讲解的是:服务器接受Ht... 阅读全文

大叔手记(18):利用Elmah和Google体验一把入侵的快感

2012-01-13 15:28 by 汤姆大叔, 13535 阅读, 收藏, 编辑
摘要:介绍关于ELMAH,相信大家都不陌生了,最流行的错误日志记录组件,用过的人都知道其强大的威力,可以记录非常详细的错误信息供管理员和开发人员进行分析。Elmah配置起来也非常简单,但是同时也带来了一个问题:那就是如果配置不好的话,就会被入侵,而且入侵的方法非常非常简单,本文我讲演示一下,如何利用Elmah错误信息和Google搜索来入侵一个站点,同时本文也提供了正确的Elmah配置方法。原文整理自:http://www.troyhunt.com/2012/01/aspnet-session-hijacking-with-google.html注1:本人目的是让大家正确配置ELMAH,不是教大家入 阅读全文

大叔手记(17):大叔2011年读过的书及2012年即将要读的书

2012-01-04 09:39 by 汤姆大叔, 26523 阅读, 收藏, 编辑
摘要:前言2011年是大叔最累的一年(基本上都是晚上12点以后睡觉,早上6点30分起),读得书也是异常的多,一方面要保持自己的技术在最前列,另外方面技术管理和项目管理方面的东西也要进一步进阶,2011年读过的书超过60本(也包括只收藏不读的书,还有一些非常小的英文电子书就不列了),除了一些大牛的书,其它的书基本上都是粗读的(一周一本),同时2012年的书也是按照这个计划来安排的,即:国际/国内大牛的书通读,一般的书粗读,以保证技术人员和管理人员的先进性:)。带 [荐]字的都是推荐大家读的。看了这篇帖子,大家千万别像我这么变态地读书,因为大叔已经不怎么亲自Coding了,所有以大量的时间读书。大叔在这 阅读全文

大叔手记(16):分析URL Routing和URL Rewriting两者之间的不同

2011-12-27 14:07 by 汤姆大叔, 10748 阅读, 收藏, 编辑
摘要:前言前面有2篇帖子提到了关于URL Routing的特性,但是发现有很多人误会URL Routing就是URl Rewriting,其实2个虽然都提供相似的功能(提高友好的URL方便搜索引起收录),但是2者的原理和运行周期是完全不一样的,本篇文章我们就来分析一下具体有什么不同。例子在分析原理之前,我们先来做一个例子测试一下(IIS URL Rewrite模块需要IIS7的支持)。1.为Customer/1的URL建立对应的MVC程序首先建立一个普通的MVC3程序,建立一个简单的CustomerController以及一个简单的Detail action,代码如下:public class Cu 阅读全文

大叔手记(15):在ASP.NET 4.0 Web form上使用Routing优化URL

2011-12-26 08:52 by 汤姆大叔, 6100 阅读, 收藏, 编辑
摘要:前言大家都知道MVC里利用Routing的特性将地址映射到Controller和Action上,其实因为本身Routing是.Net 4.0内置的特性了,所以Web form上其实也可以适用的,今天我们就来看看如何做一下URL地址的优化,目的是将http://localhost/Customer.aspx?Id = 1优化成http://localhost/Custome/1的形式。正文首先,建立一个空的ASP.NET 4.0 Web form项目,建立Global.asax文件,在Glolal类里,我们添加如下代码:namespace EasyURL{ public class Glo... 阅读全文

大叔手记(9):小心使用IHttpHandler下的IsReusable属性

2011-12-17 20:39 by 汤姆大叔, 16858 阅读, 收藏, 编辑
摘要:简介我们平时在开发的时候,经常做一些自定义的HttpHandler,每次再继承IHttpHandler接口的时候,都要设置IsReusable的值,通常我们都是设置返回true,可是我们要小心这个返回值,因为设置为true的时候有很多前提条件,其中最重要的2个是:线程要安全一个请求的HttpHandler实例下的状态或上下文信息不能被另外一个请求共享。再深一点MSDN对IsReusable的解释非常少:获取一个值,该值指示其他请求是否可以使用 IHttpHandler 实例。首先,IsReusable这个属性其实用来指明IHttpHandler实现类的实例是否可以被用来处理多个请求。当通过AS 阅读全文