随笔分类 - [61]MVC
-
理解MVC底层运行机制
摘要:今天,我将开启一个崭新的话题:ASP.NET MVC框架的探讨。首先,我们回顾一下ASP.NET Web Form技术与ASP.NET MVC的异同点,并展示各自在Web领域的优劣点。在讨论之前,我对这两种技术都非常热衷,我个人觉得在实际的项目开发中,两者都能让我们受益匪浅,因此是目前Web领域两大平行和流行的技术。我们都知道,在传统的ASP.NET Web Form应用程序中,Microsoft已为我们设计了较为完整、简洁的开发环境,并提供了复杂的处理引擎,开发者只需简单的拖放控件和编写对应的事件就能实现我们想要的功能。但是,正是因为这些快捷的开发模式,对于开发者而言,却很难了解程序背后HT 阅读全文
-
ASP.NET MVC+JQuery+CKEditor系统开发
摘要:前一段时间做了两个关于ASP.NET MVC的应用,忙里偷闲,总结一下前一段时间的工作,同时也与大家分享一下在系统开发中遇到的问题以及解决办法,希望对大家有些帮助吧!开发:关于开发模式:1. 将数据库访问层单独拿出来写,建立一个类库,切记方法定义与实现相分离,提供系统的可复用性,在Model层中对数据访问类库中的方法进行封装;2. 在数据访问类库中抛出异常,在Controller中进行捕获,对异常的内容,以用户可以理解方式展现出来;3. 在View中,将公用的页面如(错误页面,消息提示页面都放在Shared文件夹中);4. 将常量都拎出来,单独放在一个文件,这样便于系统系统的维护。如果需要修改 阅读全文
-
ASP.NET MVC+Spring.net+Nhibernate+EasyUI+Jquery开发案例(1)
摘要:前言:由于这段时间公司的事情比较的繁忙,每天都要学习新的东西,所以好久没有写博客了,今天抽空写写博客来记录我这段时间研究的东西,给自己加深一下印象,我用easyUI的组件开发了一个简单操作数据库的小样例,一些常用的数据库操作都实现了,希望能和博客园里面的博主们交流交流意见。首先我用的开发环境是Visual Studio 2010,ASP.NET MVC2.0,SQL SERVER2005,我用的NHibernate的版本是1.2.1,Spring.net的版本是1.1.0。首先在这里将我的疑惑先说出来,希望有人能够给我解答解答,在这里谢过了,我在用版本的时候我发现NHibernate1.2.1 阅读全文
-
通过实例模拟ASP.NET MVC的Model绑定机制[上篇]
摘要:总的来说,针对目标Action方法参数的Model绑定完全由组件ModelBinder来实现,在默认情况下使用的ModelBinder类型为DefaultModelBinder,接下来我们将按照逐层深入的方式介绍实现在DefaultModelBinder的默认Model绑定机制。[源代码从这里下载][本文已经同步到《How ASP.NET MVC Works?》中]目录一、简单类型二、复杂类型三、数组四、集合五、字典一、简单类型对于旨在绑定目标Action方法参数值的Model来说,最简单的莫过于简单参数类型的情况。通过《初识Model元数据》的介绍我们知道,复杂类型和简单类型之间的区别仅仅在 阅读全文
-
ModelBinder——ASP.NET MVC Model绑定的核心
摘要:Model的绑定体现在从当前请求提取相应的数据绑定到目标Action方法的参数。通过前面的介绍我们知道Action方法的参数通过ParameterDescriptor来描述,ParameterDescriptor的BindingInfo属性表示的ParameterBindingInfo对象具有一个名为ModelBinder的组件用于完成针对当前参数的Model绑定。ModelBinder可以看成是整个Model绑定系统的核心,我们先来认识这个重要的组件。[本文已经同步到《How ASP.NET MVC Works?》中]目录一、 ModelBinder二、CustomModelBinderAt 阅读全文
-
ASP.NET MVC以ValueProvider为核心的值提供系统: ValueProviderFactory
摘要:在ASP.NET Model绑定系统中,用于提供数据值的ValueProvider对象通过ValueProviderFactory来创建。在ASP.NET MVC应用编程接口中,ValueProviderFactory继承自ValueProviderFactory类。本篇文章只要介绍基于ValueProviderFactory的ValueProvider的提供机制,以及如何通过自定义ValueProviderFactory实现我们需要的数据值的绑定方式。[本文已经同步到《How ASP.NET MVC Works?》中]目录一、ValueProviderFactory二、ValueProvid 阅读全文
-
ASP.NET MVC以ValueProvider为核心的值提供系统: NameValueCollectionValueProvider
摘要:在进行Model绑定过程中,需要根据基于Action方法参数的绑定上下文从请求数据中提取相应的数据以提供相应的数据。具体来说,Model绑定的数据具有多个来源,可能来源于Post的表单或者JSON字符串,或者来源于当前的路由数据,也可能来源于请求地址的插叙字符串。ASP.NET MVC将这种基于不同数据来源的数据获取/提供机制实现在一个叫做ValueProvider的组件中。[本文已经同步到《How ASP.NET MVC Works?》中]目录一、IValueProvider与ValueProviderResult二、NameValueCollectionValueProvider三、两种前 阅读全文
-
ASP.NET MVC以ValueProvider为核心的值提供系统: DictionaryValueProvider
摘要:NameValueCollectionValueProvider采用一个NameValueCollection作为数据源,DictionnaryValueProvider的数据源类型自然就是一个Dictionnary。NameValueCollection和Dictionnary都是一个键值对的集合,它们之间的不同之处在NameValueCollection运行元素具有相同的Key,Dictionnary却要求元素的Key具有唯一性。[本文已经同步到《How ASP.NET MVC Works?》中]目录一、DictionaryValueProvider<TValue>二、Rout 阅读全文
-
ASP.NET MVC如何实现自定义验证(服务端验证+客户端验证)
摘要:ASP.NET MVC通过Model验证帮助我们很容易的实现对数据的验证,在默认的情况下,基于ValidationAttribute的声明是验证被使用,我们只需要将相应的ValidationAttribute应用到Model的类型或者属性上即可。对于自定义验证,我们也只需要定义相应的Validation就可以了,不过服务端验证比较简单,而客户端验证就要稍微复杂一些,本文提供一个简单的实例说明在ASP.NET MVC中实现自定义验证的基本步骤。[源代码从这里下载]一、AgeRangeAttribute用于验证出生日期字段以确保年龄在制定的范围之内的AgeRangeAttribute定义如下,简单 阅读全文
-
通过ASP.NET Web API + JQuery创建一个简单的Web应用
摘要:看了dudu的《HttpClient + ASP.NET Web API, WCF之外的另一个选择》一文,想起多很久之前体现ASP.NET Web API而创建的一个Demo。这是一个只涉及到简单CRUD操作的Web应用,业务逻辑以Web API的形式定义并以服务的形式发布出来,前台通过jQuery处理用户交互并调用后台服务。[源代码从这里下载]目录一、一个简单的基于CRUD二、通过ASP.NET Web API提供服务三、通过JQuery消费服务一、一个简单的基于CRUD的Web应用这个简单的Demo应用用于模拟“联系人管理”。当页面加载的时候,所有的联系人列表被列出来。在同一个页面中,我们 阅读全文
-
ASP.NET MVC三个重要的描述对象:ParameterDescriptor
摘要:Model绑定是为作为目标Action的方法准备参数列表的过程,所以针对参数的描述才是Model绑定的核心。在ASP.NET MVC应用编程接口中,服务于Model绑定的参数元数据通过ParameterDescriptor类型来表示,而ActionDescriptor的GetParameters方法返回的就是一个ParameterDescriptor数组。如下面的代码片断所示,ParameterDescriptor同样实现了ICustomAttributeProvider接口提供应用在相应参数上的特性。ParameterDescriptor的只读属性ActionDescriptor表示描述所在 阅读全文
-
HttpClient + ASP.NET Web API, WCF之外的另一个选择
摘要:WCF的野心造成了它的庞大复杂,HTTP的单纯造就了它的简单优美。为了实现分布式Web应用,我们不得不将两者凑合在一起 —— WCF服务以HTTP绑定宿主于IIS。于是有了让人晕头转向的配置、让人郁闷不已的调试,还有那ServiceContract, DataContract,EnumMember...还有还有,不要在using语句中调用WCF服务...于是经常自问:拿着牛刀削苹果有必要吗?废话,当然没有必要,水果刀在哪里?微软看着这么多人拿着牛刀削苹果,自己也看不下去了,于是,一种水果刀横空出世 ——ASP.NET Web API。最近我们在实际开发中有个地方用WCF太麻烦,就小试了一下水果 阅读全文
-
ControllerDescriptor和ActionDescriptor的创建
摘要:不论是用于描述Controller的ControllerDescriptor,还是用于描述Action方法的ActionDescriptor,都具有同步和异步两个版本,那么这些不同类型的ControllerDescriptor的ActionDescriptor是在什么情况下创建的呢?一、ControllerActionInvoker与AsyncControllerActionInvokerControllerDescriptor的创建设计到一个重要的名为ActionInvoker的组件,顾名思义,ActionInvoker专门用于Action方法的执行。我们会在本书第7章“Action方法的执 阅读全文
-
ASP.NET MVC三个重要的描述对象:ActionDescriptor
摘要:在Model绑定过程中会通过激活的Controller类型创建用于描述它的ControllerDescriptor对象。Controller是一组Action方法的集合,而每一个Action通过ActionDescriptor对象来表示,在这篇文章中我们就来着重谈谈不同类型的ActionDescriptor。[本文已经同步到《How ASP.NET MVC Works?》中]目录一、ActionDescriptor二、AsyncActionDescriptor三、ReflectedActionDescriptor四、ReflectedAsyncActionDescriptor五、TaskAsy 阅读全文
-
ASP.NET MVC三个重要的描述对象:ControllerDescriptor
摘要:ASP.NET MVC应用的请求都是针对某个Controller的某个Action方法,所以对请求的处理最终体现在对目标Action方法的执行。而Action方法具有相应的参数,所以在方法执行之前必须根据相应的规则从请求中提取相应的数据并将其转换为Action方法参数列表,我们将这个过程称为Model绑定。在ASP.NET MVC应用编程接口中,Action方法某个参数的元数据通过ParameterDescriptor表示,而两个相关的类型ControllerDescriptor和ActionDescriptor则用于描述Controller和Action方法。[本文已经同步到《How ASP 阅读全文
-
ASP.NET MVC的Model元数据提供机制的实现
摘要:在前面的介绍中我们已经提到过表示Model元数据的ModelMetadata对象最终是通过一个名为ModelMetadataProvider的组件提供的,接下来我们着重讨论基于ModelMetadataProvider的Model元数据提供机制及其扩展。[本文已经同步到《How ASP.NET MVC Works?》中]一、 ModelMetadataProvider在ASP.NET MVC的Model元数据相关的应用编程接口中,用于创建Model元数据的ModelMetadataProvider接继承自抽象类ModelMetadataProvider。如下面的代码片断所示,ModelMeta 阅读全文
-
Razor视图引擎攻略
摘要:--引子 看下面一段MVC 2.0的代码。<%if (Model != null){%> <p><%=Model%></p><%}%><%else{%> //Do something<%}%> 我们站在一个读者的立场上来看,”<% %>“这种标记C#代码的方法是十分蛋疼的。 如果写这段代码的人没有良好的缩进和对齐习惯的话,一段逻辑较为复杂的代码就会堆砌着杂乱无章的"<%“和"%>"--匹配它们就是一件头疼的事情,会让读者望而生畏。 即使是写代码的本人,闭合也 阅读全文
-
MVC3+EntityFramework实践笔记
摘要:最近项目想做一个员工统一工号生成的系统,本来可以直接让别的同事来做的,不过大家都在项目上忙不开,刚好也可以练练手于是就接过这个项目。之前虽然一直对MVC和Entity Framework有点了解,但是实际使用的时候还是有很多问题。本文是记录在项目开发过程中遇到的第一手问题及解决办法。1.DataContext的选择遇到的第一个问题就是DtaContext的选择,之前以为根据生成的EDMX就可以直接选择Model生成Controller及View了。 不知道还需要Data context。好吧,初步查了一下Data Context是相关的底层数据连接、数据集定义的。所以在生成Controller 阅读全文
-
翻译:Contoso 大学 - 10 - 高级 EF 应用场景
摘要:By Tom Dykstra, Tom Dykstra is a Senior Programming Writer on Microsoft's Web Platform & Tools Content Team.原文地址:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/advanced-entity-framework-scenarios-for-an-mvc-web-application全文目录:Contoso 大学 - 使用 EF Code First 创建 MVC 应用在上一个教程 阅读全文
-
在ASP.NET MVC中通过URL路由实现对多语言的支持
摘要:对于一个需要支持多语言的Web应用,一个很常见的使用方式就是通过请求地址来控制界面呈现所基于的语言文化,比如我们在表示请求地址的URL中将上语言文化代码(比如en或者en-US)来指导服务器应该采用怎样的语言来显示界面的内容。对于一个ASP.NET MVC应用来说,我们很容易通过URL路由来实现这样一个功能。[本文已经同步到《How ASP.NET MVC Works?》中]在具体介绍实现之前,我们通过一个简单的例子谈谈最终实现的效果。在通过ASP.NET MVC项目模板创建的空Web应用中,我们创建了如下一个HomeController,默认的Action方法Index用于呈现一个登录Vie 阅读全文