ASP.NET MVc
文章平均质量分 85
dz45693
我是一个软件开发人员,有较强的责任心,是一个典型的技术爱好者。在此希望能认识更多好朋友。
展开
-
自定义视图引擎
自定义视图引擎创建自己的视图引擎public class HoTMeaTViewEngine : VirtualPathProviderViewEngine { public HoTMeaTViewEngine() { base.ViewLocationFormats = new string[] { "~/Views/{1}/{0}.htm原创 2009-12-22 14:28:00 · 2795 阅读 · 0 评论 -
自定义数据绑定
自定义数据绑定新建自定义数据模型 public class FileCollectionModelBinder : IModelBinder { public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) {原创 2009-12-22 16:37:00 · 2849 阅读 · 0 评论 -
自定义GridView控件开发
//构建分页列表using System;using System.Collections.Generic;namespace Spencer{ public class PagedList : List { public PagedList(IEnumerable items, int pageIndex, int pageSize,原创 2009-12-22 12:23:00 · 3182 阅读 · 2 评论 -
ASP.NET MVC 项目中如何显示图片?
今天搞了一天的MVC,在显示图片的时候老是出现问题,从网上搜索了好久,才找到解决方法。首先是创建一个类,继承于ActionResult,记住要引用System.Web.Mvc命名空间,如下: public class ImageResult :PartialViewResult { public ImageFormat ContentType { get; se转载 2011-11-04 11:16:10 · 11515 阅读 · 0 评论 -
WebAPI通过multipart/form-data方式同时上传文件以及数据(含HttpClient上传Demo)
简单的Demo,用于了解WebAPI如何同时接收文件及数据,同时提供HttpClient模拟如何同时上传文件和数据的Demo,下面是HttpClient上传的Demo界面1、HttpClient部分:HttpClient通过PostAsync提交数据时,第二个请求参数为抽象类HttpContent,当前我们需要通过multipart/form-data的方式模拟请求,multipart...转载 2011-11-04 13:19:12 · 5494 阅读 · 1 评论 -
web优化之-mvc js动态合并 动态压缩 去掉js重复引用 js缓存 js延迟加载
做web前段也有一段时间了,对于web中js文件的加载有些体会想跟大家一起分享一下。1.首先说说js文件的合并和压缩吧为了便于集中式管理js的合并和压缩我们创建一个Js.ashx文件来专门处理合并压缩,这里我们借用Yahoo.Yui.Compressor工具来压缩我们的js文件代码如下: public class Js : IHttpHandler {原创 2012-05-03 12:18:42 · 14842 阅读 · 9 评论 -
Asp.net MVC DefaultModelBinder分析
今天看见一同事写了一段代码很是奇怪,大致结构如下: public ActionResult Demo(string name, dynamic obj) { if (obj != null) { return Content("obj is not null");原创 2012-08-29 00:14:07 · 5530 阅读 · 0 评论 -
Asp.Net MVC 项目预编译 View
最近做项目是遇到一个问题,在我们的view中经常遇到一些匿名类型对象,然后在通过RenderPartial输出这些对象。还是举个例子吧,有3个view Index.cshtml、Test.cshtml、Test2.cshtml它们的层次结构如图:它们的代码如下:Index.cshtml@{ Layout = null; var obj = new[] {原创 2012-08-31 11:04:02 · 4823 阅读 · 0 评论 -
web优化之-Asp.net MVC js、css动态合并 动态压缩
上次写了两篇有关js的合并压缩如web优化之-mvc js动态合并 动态压缩 去掉js重复引用 js缓存 js延迟加载web优化之-asp.net js延迟加载 js动态合并 js动态压缩看了一下的访问两比较大,现在js和css的合并压缩整理一下。首先还是需要一个handler来处理文件的合并、压缩、缓存,.js和css的压缩我们采用的是Yahoo.Yui.Compressor,所原创 2012-08-30 11:20:58 · 5514 阅读 · 0 评论 -
ASP.NET MVC 模版切换 自定义模板路径
不用的场景下使用不用的mvc 模版。目录结构希望是/templates Default Red 当传入 “Red ” 参数的时候则调用 Red 下面的View可以直接使用默认的RazorView RazorView rv = new RazorView(this.ControllerContext, "~/Template/Red/Hom原创 2012-09-26 15:31:52 · 4266 阅读 · 0 评论 -
[源码学习]Razor在VS调试配置
1.ASP.NET MVC3源码下载Codeplexhttp://aspnet.codeplex.com/releases2. 创建调试用的project TestMVC33.添加ASP.NET MVC3源码中的下面几个project到调试用的solution中其实刚开始做的时候是先做的第4步,然后通过vs错误提示找到下面这几个project的...转载 2012-10-23 13:47:07 · 3264 阅读 · 0 评论 -
asp.net mvc源码分析-路由篇 如何找到 IHttpHandler
学习是使用asp.net已经有很长一段时间了,现在就来分析一下mvc的整过过程吧。个人计划写一个mvc系列的博文,仅从源代码的角度来分析mvc。在接触mvc时我们一定会经历路由,那么路由这东东是怎么搞出来的啊。在我们的web.config中有这么一句: <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, P原创 2012-11-08 11:57:46 · 4377 阅读 · 2 评论 -
asp.net mvc源码分析-Controllerl篇 ControllerDescriptor
在上篇asp.net mvc源码分析-Controllerl篇 TempData数据存储 我们讲到了ActionInvoker.InvokeAction(ControllerContext, actionName) 这句,当时跳过了,现在我们首先来看看ActionInvoker属性的定义吧: public IActionInvoker ActionInvoker {原创 2012-11-09 10:50:13 · 3273 阅读 · 0 评论 -
asp.net mvc源码分析-Controllerl篇 TempData数据存储
本些列文章是以asp.net mvc源代码为例按照asp.net mvc执行顺序一一分析和解释。上篇文章asp.net mvc源码分析-Controllerl篇 如何创建Controller实例 讲到了如何创建Controller,在创建后就调用 controller.Execute(RequestContext);在ControllerBase的Execute方法很简单 Ve原创 2012-11-08 23:38:01 · 4999 阅读 · 1 评论 -
asp.net mvc源码分析-Controllerl篇 如何创建Controller实例
在上一篇文章asp.net mvc源码分析-路由篇 如何找到 IHttpHandler中最后提到了MvcHandler,来上我们看看它的定义 public class MvcHandler : IHttpAsyncHandler, IHttpHandler, IRequiresSessionState它有几个比较重要的属性:internal ControllerBuilder Cont原创 2012-11-08 15:12:56 · 4364 阅读 · 0 评论 -
asp.net mvc源码分析-Action篇 ParameterDescriptor
紧接着上篇asp.net mvc源码分析-Action篇 Filter 中提到了 IDictionary parameters = GetParameterValues(controllerContext, actionDescriptor);首先这个方法的目的很明白获取当前Action参数名称和值得一个字典。 protected virtual IDictionary GetParamet原创 2012-11-09 22:51:29 · 3476 阅读 · 0 评论 -
asp.net mvc源码分析-Action篇 Action的执行
接着上篇 asp.net mvc源码分析-Action篇 DefaultModelBinder 我们已经获取的了Action的参数,有前面的内容我们知道Action的调用时在ControllerActionInvoker类的InvokeActionMethod方法。 protected virtual ActionResult InvokeActionMethod(ControllerCont原创 2012-11-10 23:06:59 · 3295 阅读 · 0 评论 -
asp.net mvc源码分析-ActionResult篇 FindView
接着上篇asp.net mvc源码分析-ActionResult篇 ViewResult 中有ViewEngineResult result = ViewEngineCollection.FindView(context, ViewName, MasterName)这么一句,它究竟是怎么找到View的了?首先放我们看看你ViewEngineCollection中的FindView方法吧,其实就一句原创 2012-11-11 12:59:31 · 5341 阅读 · 3 评论 -
asp.net mvc源码分析-Controller篇 ValueProvider
在上篇文章asp.net mvc源码分析-Action篇 IModelBinder中我们提到了ValueProvider,其实这个东西是Controller的属性,在写前面Controller的是曾打算把它写书来,后来有以下在后面用的时候在写它相关的东东吧,需求才能推动发展啊。先说明一下这个属性石很重要的,Action参数的值最总都是通过它来获取的。 public IValueProvid原创 2012-11-10 12:30:47 · 3472 阅读 · 0 评论 -
asp.net mvc源码分析-Action篇 IModelBinder
紧接着上篇asp.net mvc源码分析-Action篇 ParameterDescriptor 文章 在ReflectedParameterBindingInfo有这个public override IModelBinder Binder属性,同时在ControllerActionInvoker中也有一个类似的 protected internal ModelBinderDictionary原创 2012-11-10 09:33:40 · 3719 阅读 · 0 评论 -
asp.net mvc源码分析-Action篇 DefaultModelBinder
接着上篇 asp.net mvc源码分析-Controller篇 ValueProvider 现在我们来看看ModelBindingContext这个对象。 ModelBindingContext bindingContext = new ModelBindingContext() { FallbackToEmptyPrefix = (parameterDes原创 2012-11-10 20:36:22 · 4318 阅读 · 0 评论 -
asp.net mvc源码分析-ActionResult篇 ViewResult
接着上篇文章asp.net mvc源码分析-Action篇 Action的执行 ,现在Action已经执行并且返回结果,在ControllerActionInvoker.InvokeAction方法中 ActionExecutedContext postActionContext = InvokeActionMethodWithFilters(controllerContext, filter原创 2012-11-11 10:51:43 · 4087 阅读 · 0 评论 -
asp.net mvc源码分析-AsyncController
我们前面的讲的都是基于同步的Controller来实现,现在我们来看看基于异步的AsyncController又是如何实现的。首先看一个demo吧: public void IndexAsync() { //实现异步action加计数1 FileStream fileStream = new FileStre原创 2012-11-13 16:01:50 · 3398 阅读 · 0 评论 -
asp.net mvc源码分析-ModelValidatorProviders
在上篇文章asp.net mvc源码分析-DefaultModelBinder 自定义的普通数据类型的绑定和验证最后提到了ModelValidatorProviders ,这里我们以DataAnnotationsModelValidatorProvider来说说整过的验证过程。因为DataAnnotationsModelValidatorProvider这个是我们平时用的最多的情况。其GetVal原创 2012-11-14 16:17:36 · 3362 阅读 · 0 评论 -
Asp.net Web Api源码调试
前端时间写了有关mvc3源码的一些杂事,看了mvc4里面也没有太多的变化;最近看了web Api的源码感觉不错,于是打算写写关于web api源码的一些事宜。有关web api的一些使用我就不多说了,大家可以看看ASP.NET Web API系列教程目录大家如果需要下载mvc4或则web api源码可以看aspnetwebstack.codeplex.com这里我们主要是说web ap原创 2012-12-02 23:14:24 · 4366 阅读 · 3 评论 -
Asp.net mvc View动态编译要小心啊
我们公司的项目是用asp.net mvc Razor开发的,先看看带代码吧:var itemRef = "P43_1"; try { var expermentCode = "PLE0043"; itemRef = Html.ViewContext.HttpContext.Request.QueryString["itemCode原创 2012-11-19 09:13:25 · 4246 阅读 · 0 评论 -
Asp.net web Api源码分析-HttpRequestMessage的创建
紧接着前文Asp.net web Api源码分析-如何获取IHttpHandler我们已经得到了HttpControllerHandler实例,它是一个IHttpAsyncHandler类型,我们来看看它的BeginProcessRequest方法是如何实现: protected virtual IAsyncResult BeginProcessRequest(HttpContextBa原创 2012-12-03 15:09:49 · 5270 阅读 · 0 评论 -
Asp.net web Api源码分析-如何获取IHttpHandler
我们知道任何asp.net web程序的处理都是由IHttpHandler来实现的,那么这里我看看web api是如何让获取IHttpHandler的。这里假设你已经能熟练的使用web api,我还是沿用以前的风格以一个简单的demo来说明吧。默认在我们的Global.asax.cs有这么一句 WebApiConfig.Register(GlobalConfiguration.Configu原创 2012-12-03 12:28:34 · 4048 阅读 · 0 评论 -
asp.net mvc RouteCollection的RouteExistingFiles属性理解
RouteCollectiond的RouteExistingFiles属性一看这个名字,我想大家就能猜出来它的意思,对静态资源是否启用路由。我在Asp.net Web.config文件读取路径你真的清楚吗?里面做demo时遇到这样一个问题:项目结构如下:我原本是用来让程序读views/channel/men/web.config文件,当我添加了men文件夹后,整过路由都出错了。我的原创 2012-11-19 16:34:35 · 3467 阅读 · 0 评论 -
asp.net mvc源码分析-EditorFor
在我们的mvc日常开发会经常遇到什么LabelFor、EditorFor、Editor等等,这个扩展方法有很多是相似的。这里我们以EditorFor来说说吧,我觉得这个相对要复杂一点。首先我们来看看EditorFor的定义: public static MvcHtmlString EditorFor(this HtmlHelper html, Expression> expressio原创 2012-11-20 16:45:41 · 3468 阅读 · 0 评论 -
asp.net mvc源码分析-DefaultModelBinder 集合绑定
接着上篇关于数据绑定的asp.net mvc源码分析-DefaultModelBinder 自定义的普通数据类型的绑定和验证里面只讲了复杂数据类型的绑定,还有上面集合、字典等这些数据这么绑定的了。说到集合绑定其实网上已经有很多关于它的介绍通过实例模拟ASP.NET MVC的Model绑定机制:数组。这个我先举一个使用例子吧:后端代码:前端代码:运行结果:好,原创 2012-11-20 22:16:12 · 3501 阅读 · 0 评论 -
Asp.net web Api源码分析-HttpServer的创建
紧接着前文Asp.net web Api源码分析-HttpRequestMessage的创建HttpRequestMessage实例已经创建好了,现在我们来看看 Task responseBodyTask = _server.Value.SendAsync(request, CancellationToken.None) .Then(respons原创 2012-12-03 18:34:53 · 3763 阅读 · 0 评论 -
Asp.net web Api源码分析-HttpControllerDispatcher (Controller的创建)
紧接着上文Asp.net web Api源码分析-HttpServer的创建最后我们提到了一个HttpRoutingDispatcher,一看这个类的名字我想我们也就能猜到它是干什么的吧。查找路由信息,那么找到路由后干什么了,是不是就该调用handler了?首先还是让我们来看看HttpRoutingDispatcher的SendAsync方法 protected override T原创 2012-12-04 16:36:12 · 4115 阅读 · 0 评论 -
asp.net mvc源码分析-Route的GetRouteData
我知道Route这里东西应该算路由,这里把它放到mvc里面有些不怎么合适,但是我想大家多数遇到路由都是在mvc的时候吧.首先我们还是来看看GetRouteData方法吧public override RouteData GetRouteData(HttpContextBase httpContext){ string virtualPath = httpContext.Reque原创 2012-11-21 13:32:37 · 3963 阅读 · 2 评论 -
Asp.net web Api源码分析-HttpActionDescriptor的创建
紧接着上文Asp.net web Api源码分析-HttpControllerDispatcher (Controller的创建)这里已经创建好了IHttpController,现在让我们来看看它的ExecuteAsync方法,这个方法很是复杂啊。 public virtual Task ExecuteAsync(HttpControllerContext controllerContext, C原创 2012-12-04 21:44:33 · 4063 阅读 · 0 评论 -
Asp.net web Api源码分析-Filter
紧接着上文Asp.net web Api源码分析-HttpActionDescriptor的创建HttpActionDescriptor现在已经创建好了,在这里个人再次提醒一下,建议大家在路由的时候写上Action参数,如api/{controller}/{action}/{id}而不要忽略Action参数写成api/{controller}/{id}。现在我们回到ApiControl原创 2012-12-05 11:47:26 · 3611 阅读 · 0 评论 -
asp.net mvc源码分析-Action篇 Filter
紧接着上篇 asp.net mvc源码分析-Controllerl篇 ControllerDescriptor 现在我们该看 FilterInfo filterInfo = GetFilters(controllerContext, actionDescriptor);这句代码了,意思很好明白就是获取当前的FilterInfo信息,而该方法非常简单就一句return new FilterIn原创 2012-11-09 17:05:19 · 3519 阅读 · 0 评论 -
Asp.net web Api源码分析-Action的执行
紧接着上文Asp.net web Api源码分析-HttpParameterBinding我们已经把Action调用的参数准备好了,现在就该开始调用Action了,这里的InvokeActionWithActionFilters(ApiController的ExecuteAsync方法)主要就是负责调用ActionFilters和Action的,这里的调用模式和mvc中的调用方式一致。这里fi原创 2012-12-05 20:59:41 · 3465 阅读 · 0 评论 -
Asp.net web Api源码分析-HttpParameterBinding
接着上文Asp.net web Api源码分析-Filter我们提到filter的获取和调用,后面通过HttpActionBinding actionBinding = actionDescriptor.ActionBinding;来获取HttpActionBinding实例,然后调用HttpActionBinding的ExecuteBindingAsync方法来绑定Action参数。HttpAc原创 2012-12-05 13:10:29 · 4035 阅读 · 0 评论 -
asp.net mvc源码分析-ActionResult篇 RazorView.RenderView
接着上文asp.net mvc源码分析-ActionResult篇 FindView 我们已经创建好view了,大家还记得在BuildManagerCompiledView的Render方法中最后调用的是RenderView。可能是跟人喜好问题,还有就是我工作项目用到的多数是Razor,所以这里就讲讲RazorView吧。想让我们可看看RazorView的构造函数有什么特别的地方 p原创 2012-11-11 16:37:20 · 3758 阅读 · 0 评论