自学MVC看这里——全网最全ASP.NET MVC 教程汇总 http://www.cnblogs.com/powertoolsteam/archive/2015/08/13/4667892.html
MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC。小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口。本文从Why,What,How三个角度整理MVC 的学习资源,让学习者第一时间找到最有价值的文章,获取最彻底的ASp.NET MVC 框架知识,Let’s go!
1. Why :为什么需要ASP.NET MVC
本章主要为大家汇总了为什么学习Asp.net MVC替代WebForms,产生ASP.NET MVC 的需求是什么,只有更好的理解了为什么需要MVC,出于什么目的开发的MVC 框架,用MVC 框架来弥补什么或是提升什么,才能利用其开发出最高效最满意的Web系统。
为什么会出现ASP.NET平台下的MVC框架?
说明:本文摘自InfoQ,是作者 Jonathan Allen 2007年发布的一篇的文章,首先描述了 WebForms的优缺点,由此引出MVC框架出现集成了WebForm的优点,弥补其缺点等。
ASP.NET开发人员需要学习ASP.NET MVC么?
说明:本文摘自InfoQ,是作者Jon Arild Tørresdal于2009年发布的文章,从“不推荐学习”到“所有ASP.NET开发人员都应该学习”,各种不同的观点层出不穷。这篇文章列举了使用MVC框架的就、理由。
Webform和MVC,为什么MVC更好一些?
说明:本文主要讨论了为什么微软如此热衷于丢弃传统的APS.NET Webform而转向ASP.NET MVC,从六个方面列举了为什么MVC会更好一些。
ASP.NET MVC与WebForm区别谈
说明: 本文主要区别了ASP.NET MVC与WebForm,通过对比可解决困惑。
2. What :ASP.NET MVC 框架介绍
在学习ASP.NET MVC 之前 这篇文章主要介绍ASP.NET MVC 的基础知识,帮助你了解ASP.NET MVC的轮廓。
ASP.NET MVC 概述 是MSDN的ASP.NET MVC的官方说明文档,因此是学习MVC框架首要了解的内容,没有比官网更权威的说明式文章了。
以下系列文章分别详解了MVC框架的三部分,因此能够帮助初学者深入了解MVC框架
Asp.Net MVC 控制器
Asp.Net MVC 路由
Asp.Net MVC 视图(概述) - Part.1
Asp.Net MVC(创建一个任务列表应用程序) - Part.1
Asp.Net MVC(理解模型、视图和控制器) - Part.2
ASP.NET MVC中使用View Model分离领域模型
探秘ASP.NET MVC框架传递加载过程
3. How: 如何使用Asp.net MVC 框架进行开发, Asp.net MVC 入门教程及实例开发
七天学会ASP.NET MVC 5系列教程,该系列入门教程由浅至深,介绍了MVC5的使用,涉及了一些安全方面的功能(授权认证,角色管理,异常处理)。
七天学会ASP.NET MVC (七)——创建单页应用
七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL
七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理
七天学会ASP.NET MVC (四)——用户授权认证问题
七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理
七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递
七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
ASP.NET MVC 5 系列教程,该系列教程,从一个web网站示例开始讲解,全文最终完成了一个管理影片的小系统,非常适合新手入门ASP.NET MVC 5 (新增、删除、查询、更新) ,并由此开始开发工作。
ASP.NET MVC 5 入门指南汇总
ASP.NET MVC 5– 使用Wijmo MVC 5模板1分钟创建应用
ASP.NET MVC 5 - 查询Details和Delete方法
ASP.NET MVC 5 - 给数据模型添加校验器
ASP.NET MVC 5 - 给电影表和模型添加新字段
ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)
ASP.NET MVC 5 -从控制器访问数据模型
ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB
ASP.NET MVC 5 - 添加一个模型
ASP.NET MVC 5 - 将数据从控制器传递给视图
ASP.NET MVC 5 - 视图
ASP.NET MVC 5 - 控制器
ASP.NET MVC 5 - 开始MVC5之旅
Asp.net MVC4入门教程 :为您讲解使用微软的Visual Studio Express 2012或Visual Web Developer 2010 Express Service Pack 1 来建立一个ASP.NET MVC4 Web应用程序所需要的基础知识。
Asp.Net MVC4入门指南(9):查询详细信息和删除记录
Asp.Net MVC4入门指南(8):给数据模型添加校验器
Asp.Net MVC4入门指南(7):给电影表和模型添加新字段
Asp.Net MVC4入门指南(6):验证编辑方法和编辑视图
Asp.Net MVC4入门指南(5):从控制器访问数据模型
Asp.Net MVC4入门指南(4):添加一个模型
Asp.Net MVC4入门指南(3):添加一个视图
Asp.Net MVC4入门指南(2):添加一个控制器
Asp.Net MVC4入门指南(1): 入门介绍
ASP.NET MVC 小牛之路系列文章是博客园中比较经典的MVC 框架学习文章,总共18+3讲,后3讲主要讲解MVC中一些高级知识点和最新技术,目前博文还在更新中。
[ASP.NET MVC 小牛之路]01 - 理解MVC模式
[ASP.NET MVC 小牛之路]02 - C#知识点提要
[ASP.NET MVC 小牛之路]03 - Razor语法
[ASP.NET MVC 小牛之路]04 - 依赖注入(DI)和Ninject
[ASP.NET MVC 小牛之路]05 - 使用 Ninject
[ASP.NET MVC 小牛之路]06 - 使用 Entity Framework
[ASP.NET MVC 小牛之路]07 - URL Routing
[ASP.NET MVC 小牛之路]08 - Area 使用
[ASP.NET MVC 小牛之路]09 - Controller 和 Action (1)
[ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)
[ASP.NET MVC 小牛之路]11 - Filter
[ASP.NET MVC 小牛之路]12 - Section、Partial View 和 Child Action
[ASP.NET MVC 小牛之路]13 - Helper Method
[ASP.NET MVC 小牛之路]14 - Unobtrusive Ajax
[ASP.NET MVC 小牛之路]15 - Model Binding
[ASP.NET MVC 小牛之路]16 - Model 验证
[ASP.NET MVC 小牛之路]17 - 捆绑(Bundle)
[ASP.NET MVC 小牛之路]18 - Web API
[ASP.NET MVC 大牛之路]01 - 开篇
[ASP.NET MVC 大牛之路]02 - C#高级知识点概要(1) - 委托和事件
[ASP.NET MVC 大牛之路]03 - C#高级知识点概要(2) - 线程和并发
无废话MVC 入门教程:MVC入门教程,写的很基础,简单易懂,够入门了。
无废话MVC入门教程一[概述、环境安装、创建项目]
无废话MVC入门教程二[第一个小Demo]
无废话MVC入门教程三[路由设置及视图入门]
无废话MVC入门教程四[视图中的Layout使用]
无废话MVC入门教程五[Control与View交互]
无废话MVC入门教程六[Model中的验证规则]
无废话MVC入门教程七[Control中使用AOP]
无废话MVC入门教程八[MvcPager分页控件的使用]
无废话MVC入门教程九[实战一:用户注册与登陆]
无废话MVC入门教程十[实战二:用户管理]
后传一:mvc分页
后传二:mvc缓存
ASP.NET MVC 入门系列教程,一个居于ASP.NET MVC Beta的系列入门文章
ASP.NET MVC 入门1、简介
ASP.NET MVC 入门2、项目的目录结构与核心的DLL
ASP.NET MVC 入门3、Routing
ASP.NET MVC 入门4、Controller与Action
ASP.NET MVC 入门5、View与ViewData
ASP.NET MVC 入门6、TempData
ASP.NET MVC 入门7、Hellper与数据的提交与绑定
ASP.NET MVC 入门8、ModelState与数据验证
ASP.NET MVC 入门9、Action Filter 与 内置的Filter实现(介绍)
ASP.NET MVC 入门10、Action Filter 与 内置的Filter实现(实例-防盗链)
ASP.NET MVC 入门11、使用AJAX
使用ASP.NET MVC 开发实例开发教程,原文内容出自微软的 MusicStore。该系列文章从以音乐商店系统为例,从基础知识开始,逐步深入介绍,因此,初学者有很好的学习体验。示例程序使用 ASP.NET MVC3 完成,视图部分使用 Razor 引擎,数据库访问使用 EF CodeFirst。
ASP.NET MVC 音乐商店 - 0 概览
ASP.NET MVC 音乐商店 - 1 创建项目
ASP.NET MVC 音乐商店 - 2.控制器
ASP.NET MVC 音乐商店 - 3. 视图与模型
ASP.NET MVC 音乐商店 - 4. 数据访问
ASP.NET MVC 音乐商店 - 5. 通过支架创建编辑表单
ASP.NET MVC 音乐商店 - 5 通过支架创建编辑表单 续
ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
ASP.NET MVC 音乐商店 - 7.成员管理和授权
ASP.NET MVC 音乐商店 - 8. 使用 Ajax 更新的购物车
ASP.NET MVC 音乐商店 - 9. 注册和结账
ASP.NET MVC 音乐商店 - 10. 完成导航和站点的设计
这一系列的博客比较早,是ASP.NET MVC 1.0的学习,如需了解一些基本的,原始知识,可从这系列博客中获取
从零开始学习 ASP.NET MVC 1.0 (五) ViewEngine 深入解析与应用实例
从零开始学习 ASP.NET MVC 1.0 (四) View/Model 全解
从零开始学习 ASP.NET MVC 1.0 (三) Controller/Action 深入解析与应用实例
从零开始学习 ASP.NET MVC 1.0 (二) 识别URL的Routing组件
从零开始学习ASP.NET MVC 1.0 (一) 开天辟地入门篇
4. 使用ASP.NET MVC 解决高级问题
本系列文章讲解了ASP.NET MVC中视图片断缓存方式,视图片断缓存非常重要,因为它缓存的也是页面内容,这表示它比更低级别的缓存更有效率,也比静态页等整页内容缓存的适用面要大得多。
适合ASP.NET MVC的视图片断缓存方式(上):起步
适合ASP.NET MVC的视图片断缓存方式(中):更实用的API
适合ASP.NET MVC的视图片断缓存方式(下):页面输出原则
由于早期的MVC 框架缺少异步Action功能,因此博主自行编写了扩展:完整,方便,并且非常轻巧——核心逻辑代码只有200行左右,确保了扩展的稳定,高效并且拥有较好的向后兼容性。
为ASP.NET MVC扩展异步Action功能(上)
为ASP.NET MVC扩展异步Action功能(下)
其他高级功能
使用Model Binder绑定Action参数字段时的取舍问题
在ASP.NET MVC中使用IIS级别的URL Rewrite
英文学习资源
http://www.asp.net/mvc
其他
asp.net mvc相关开源项目推荐
5. 选择工具提升效率
工欲善其事,必先利其器,葡萄城的 ComponentOne Studio ASP.NET MVC 是针对MVC平台的控件包。它与Visual Studio无缝集成,完全与MVC6和ASP.NET 5.0兼容。将大幅提高效率,能提供从桌面到移动设备的体验,不用任何妥协就能创建触控优先的现代化解决方案。
它包含的控件涉及表格及数据管理、数据可视化、日程安排、输入和编辑、导航和布局、报表和文档、系统提升工具等几个方面。其中的常用控件包括表格、图表、仪表盘、子弹图、金融图表、报表、日历、输入控件等。
它具有移动优先的特点。不用损耗性能就能提供桌面到移动设备的体验。您的用户会爱上它的轻便性,您也会喜欢其内嵌的触控支持。它与Visual Studio集成是无缝的,您可以从安装开始一步步入门。ComponentOne Studio包括了项目和编辑器模板,同时IntelliSense和微软最新framework的支持将大幅提高效率。如果您想迅速了解它,请运行在线演示。
6. 推荐学习ASP.NET MVC 书籍
Apress 社的 《Pro ASP .NET MVC 4》,中文译本叫做《精通ASP.NET MVC4》,1-5章是ASP.NET MVC的基础知识,第6章介绍了单元测试与Moq,7-11一个具体的练习,12-26高级知识。
《ASP.NET MVC 4 Web编程》.NET开发者学习MVC的必备圣典!
《ASP.NET MVC 4框架揭秘(微软6任MVP,高级软件顾问蒋金楠新作)》
《ASP.NET MVC 3高级编程》(Microsoft 内部编写,创建数据驱动型动态Web程序的最新框架)
本书由Microsoft公司内部团队编写,深入阐述了如何利用ASP.NET MCV 3的新特性及其激动人心的功能。本书首先简单介绍了ASP.NET MVC框架,然后一步步地向您展示如何安装和创建ASP.NET MVC项目。
《ASP.NET MVC实战》
mvc作为一种流行的应用程序开发框架已经存在多年。现在,microsoft公司也加入了这个社区,asp.net mvc框架为应用程序开发人员提供利用成熟开发模式,开发易于理解、易于测试和易于维护的应用程序的新利器。
《ASP.NET MVC 2开发实战》
主要分成3篇。基础观念篇介绍了开发人员在学习asp.net mvc之前需要了解的技术和观念,以及mvc架构的基础知识。
《ASP.NET MVC 1.0高级编程》
本书由asp.net小组成员编写,scott guthrie首先提供了一个说明如何构建应用程序的完整演示,然后深入介绍mvc的基本概念和历史,并快速过渡到讨论asp.net mvc模式如何实现这些概念。
========
七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC http://blog.csdn.net/sunkooshining/article/details/51943678
ASP.NET vs MVC vs WebForms
许多ASP.NET开发人员开始接触MVC认为MVC与ASP.Net完全没有关系,是一个全新的Web开发,事实上ASP.NET是创建WEB应用的框架而MVC是能够用更好的方法来组织并管理代码的一种更高级架构体系,所以可以称之为ASP.NET MVC。
我们可将原来的ASP.NET称为 ASP.NET Webforms,新的MVC 称为ASP.NET MVC.
ASP.NET Web Form
ASP.NET 在过去的十二年里,已经服务并成功实现Web 应用的开发。我们首先了解一下为什么ASP.NET能够如此流行,并成功应用。
微软编程语言从VB开始就能够成为流行并广泛应用,都源于其提供的强大的Visual studio能够进行可视化的编程,实现快速开发。
使用VS时,开发人员能够通过拖拽UI元素,并在后台自动生成这些界面的代码。称为后台代码。在后台代码中开发人员可以添加操作这些UI元素的逻辑代码。
clip_image002
因此微软的可视化RAD架构体系有两方面组成,一方面是UI,一方面是后台代码。因此ASP.NET Web 窗体,包含ASPX和ASPX.CS,WPF包含XAML/XAML.CS等。
ASP.NET Web Form存在的问题
我们不得不考虑的问题是,既然ASP.NET Web Form 如此成功且具有优势,为什么微软还要推出ASP.NET MVC?主要是因为ASP.NET Webform的性能问题。在Web应用程序中从两方面来定义性能:
1. 响应时间: 服务器响应请求的耗时
2. 带宽消耗: 同时可传输多少数据。
响应时间
我们可以理解为什么ASP.NET Webform比较慢,如图我们做了一些小的加载测试。分别使用ASP.Net MVC和ASP.Net Webform,发现ASP.Net MVC的响应时间比Webform快了两倍。
clip_image003
接下来我们在思考一个问题为什么ASP.NET MVC的性能更好?看看下面这个示例,简单的UI代码和UI的后台代码。
假如一个textbox的ASPX页面:
对应的UI后台代码:
1: protected void Page_Load(object sender, EventArgs e)
2: {
3: TextBox1.Text = "Make it simple";
4: TextBox1.BackColor = Color.Aqua;
5: }
运行结果:
clip_image004
如果查看HTML输出,则会显示如下代码:
我们再来思考上面提到的问题
1. 这种HTML生成方式是否很有效?我们是否为了获取如此简单的HTML而长时间的消耗服务器
2. 开发人员是否可以直接编写HTML?很难实现吗?
clip_image005
通过分析我们可以得知,每一次请求都有转换逻辑,运行并转换服务器控件为HTML输出。如果我们的页面使用表格,树形控件等复杂控件,转换就会变得很糟糕且非常复杂。HTML输出也是非常复杂的。由于这些不必要的转换从而增加了响应时间。该问题的解决方案就是摆脱后台代码,写成纯HTML代码。
带宽消耗
ASP.NET开发人员都非常熟悉Viewstates,因为它能够自动保存post返回的状态,减少开发时间。但是这种开发时间的减少会带来巨大的消耗,Viewstate增加了页面的大小。在做的加载测试中,与MVC 对比,我们发现Viewstate增加了两倍的页面存储。以下是测试结果:
clip_image006
页面尺寸的增加是因为viewstate产生了额外的字节。下图就是Viewstate的截图。许多人可能会不同意此观点,但是众所周知,开发人员是如何工作的,如果有选择,他们肯定会采取别的选择。
clip_image008
HTML 消耗
现在因为我们都是后台代码和ASP.NET web server控件的努力,我们对于怎样得到HTML以及如何使他们更有效没有更好的办法。如下面展示的ASPX 代码,你能确定会生成什么样的HTML代码吗?
I am a panel
Lable标签会生成DIV标签还是SPAN标签?运行后生成的HTML代码的结果如下:label生成了span标签,Literal生成了转换为了简单的文本,而panel转换为了DIV标签。
I am label I am a literal
I am a panel
因此与其生成HTML代码,还不如直接编写HTML代码,并实现HTML控件。
所以该问题的解决方案是:不使用服务器控件,直接编写HTML代码。
直接编写HTML代码的好处在于web设计者可以与开发人员紧密合作及时沟通。设计人员可以使用他们喜爱的设计工具来设计HTMl代码,像dream weaver,前端页面等,设计独立。如果我们使用服务器控件,这些设计者工具可能不会识别。
2. 后台代码类的重用性
如果仔细观察一些专业的ASP.NET Webform项目,你会发现后台代码类往往都包含了大量的代码,并且这些代码也是非常复杂的。而现在,后台代码类继承了“System.Web.UI.Page”类。但是这些类并不像普通的类一样能够到处复用和实例化。换句话来讲,在Weform类中永远都不可能执行以下代码中的操作:
1: WebForm1 obj = new WebForm1();obj.Button1_Click();
3. 单元测试
既然无法实例化后台代码类,单元测试也是非常困难的,也无法执行自动化测试。必须手动测试。
解决方案
既然讲了ASP.Net Webform存在的两大问题即服务器控件和后台代码,以下是根源图,
clip_image009
那么解决方案是什么?
就是我们需要将后台代码迁移到独立的简单的类库,并且拜托ASP.Net服务器控件,并写一些HTML示例。
ASP.NET Webform 和MVC 比较,如下图:
clip_image010
Microsoft Asp.Net MVC 是如何弥补Web Form存在的问题的?
后台代码和服务器控件是一切问题的根源。所以如果你查看当前的WebForm体系结构,开发者正在使用的包含3层体系结构。三层体系结构是由UI包含ASPX及CS 后台代码。
UI,业务逻辑以及包含数据访问的中间层
clip_image011
Asp.Net MVC 由Model,View,Controller三部分组成。Controller中包含后台代码逻辑,View是ASPX,如纯HTML代码,Model是中间层。通过上图可获得这三部分的关系。
所以会发现MVC的改变有两点,View变成简单的HTML,后台代码移到简单的.NET类中,称为控制器。
以下是ASP.NET MVC 请求流的通用步骤:
Step 1:首先获取控制器。
Step 2:依赖行为控制器创建Model对象,Model通过转换调用数据访问层。
Step 3:数据填充Model之后,传递到View 显示层,实现显示的目的。
clip_image012
到这里我们就已经了解了ASP.Net MVC的各个组件。下面我们做一些小的实验深入了解MVC的各组件。首先我们从Controller 控制器开始,因为Controller是MVC体系架构的核心部分。
你是否真的理解Asp.Net MVC的Controller(控制器)?
为了我们能够更好的理解Controller,我们首先需要理解Controller中涉及的专业术语:用户交互逻辑。
什么是用户交互逻辑?
场景1
你是否想过当用户输入URL摁下回车键时,会发生什么事情?
clip_image013
浏览器首先需要给服务器发送请求,服务器再做出响应。
clip_image014
通过这些请求之后,客户端正尝试与服务器交互,服务器能够反馈响应,因为服务器端存在一些判断逻辑来处理这些请求。这些能够处理用户请求以及用户交互行为的业务逻辑称为用户交互逻辑。
场景2
有一种常见的情况,服务器端发送的请求是HTML请求。HTML请求是由一组输入控件和提交按钮组成的。
clip_image015
当用户点击“Save”按钮之后会发生什么?
如果你的回答是有一些事件处理器来处理button点击事件,那么很抱歉回答是错误的。
在Web编程中是没有事件的概念的,Asp.net Web forms 根据我们的行为自动添加了处理代码,所以给我们带来的错觉认为是事件驱动的编程。这只是一种抽象的描述。
当点击Button时,一个简单的HTTP请求会发送到服务器。差别在于Customer Name,Address以及Age中输入的内容将随着请求一起发送。最终,如果是有个请求,服务器端则有对应的逻辑,使服务器能够更好响应请求。简单来说是将用户交互逻辑写在服务器端。
在Asp.Net MVC中,C代表Controller,就是用来处理用户交互逻辑的。
实验一:简单的MVC Hello world,着重处理Controller。
Step1 创建一个Asp.Net MVC 5项目
打开Visual studio 2013 点“文件”->新建->项目。
clip_image016
Step 1.2 选择Web 应用,输入项目名称,选择存放路径,点击确定。
clip_image017
Step 1.3 选择MVC 模板
clip_image018
Step 1.4 选择Change Authentication(改变授权),弹出对话框中选择“No Authentication”,并点击确定。
clip_image019
Step 2 –创建控制器
Step 2.1,在资源管理器中,右击controller文件夹,选择添加->Controller(控制器)
clip_image020
Step 2.2 选择空 MVC 5 Controller 并点击添加
clip_image021
Step 2.3 输入控制器的名称”TestController“,点击添加。
在这一步骤中,要特别注意千万不能删除名称中的” Controller”关键字。名称中必须包含Controller关键字。
clip_image022
Step 3. 创建行为方法
打开新建的TestController 类,可以发现已生成的Index 方法,将该方法删除,并且添加新方法命名为GetString ,代码如下:
1: public class TestController : Controller
2: {
3: public string GetString()
4: { return "Hello World is old now. It’s time for wassup bro ;)";
5:
6: }
7: }
Step 4. 运行并测试 按 F5 键,在地址栏中以“ControllerName/ActionName”这样的形式输入,需要注意的输入控制器名称时,不能输入”Controller“只输入”Test”。
clip_image023
实验一:Q&A
1. TestController 和Test之间的关系是什么?
TestController是类名称,而Test是Controller的名称,请注意,当你在URL中输入controller的名称,不需要输入Controller这个单词。
2. Action(行为) 方法是什么?
Action 方法 简单的来说就是一个Controller内置的public类型的方法,能够接收并处理用户的请求,上例中,GetString 方法返回了一个字符串类型的响应。
注意:在Asp.Net Web Forms中默认的返回请求是HTML的,如果需要返回其他类型的请求,就必须创建HTTP 处理器,重写内容类型。这些操作在Asp.net中是很困难的。在Asp.net MVC中是非常简单的。如果返回类型是”String“直接返回,不需要发送完整的HTML。
3. 如果从Action 方法中返回对象值会出现什么意外情况?
请浏览以下代码
1: namespace WebApplication1.Controllers
2: {
3: public class Customer
4: {
5: public string CustomerName { get; set; }
6: public string Address { get; set; }
7: }
8: public class TestController : Controller
9: {
10: public Customer GetCustomer()
11: {
12: Customer c = new Customer();
13: c.CustomerName = "Customer 1";
14: c.Address = "Address1";
15: return c;
16: }
17: }
18: }
输出结果如下所示:
clip_image024
当返回类型如“Customer”这样类似的对象时,将调用ToString()方法,返回“NameSpace.ClassName”形式的类名。
4. 如果需要获得上面例子中的属性值,要如何操作?
简单重写类的“ToString”方法,如下:
1: public override string ToString()
2: {
3: return this.CustomerName+"|"+this.Address;
4: }
运行结果:
clip_image025
5. Action 方法是否只能用Public修饰符来修饰?
答案是肯定的,每个公有方法都会自动称为Action 方法。
6. 非public方法是什么?
类的方法都比较简单,并且并不是公共可用的。无法在Web中调用。
7. 如果我们需要其他函数来完成一些特定功能,但不是Action Method要如何实现?
使用NonAction属性修饰,如下:
1: [NonAction]
2: public string SimpleMethod()
3: {
4: return "Hi, I am not action method";
5: }
当尝试给以上Action 方法发送请求时,会获得以下结果:
clip_image026
View部分
Controller是处理用户请求,并做出响应,通常情况下响应都是以显示在浏览器中,使用HTML代码,浏览器才可识别。HTML有图像,文本,输入控件等。通常称为用户界面的设计即UI层,在ASP.net MVC称为View。
实验二——深入理解View
在实验二中,创建一个简单的MVC应用,仅仅具有Controller和简单的字符串类型的返回值。让我们来了解MVC中的View部分吧。
Step1 –创建新的Action 方法
在TestController中添加新的Action 方法,如下:
1: public ActionResult GetView()
2: {
3: return View("MyView");
4: }
Step 2 创建View
Step 2.1 右击上述创建的Action 方法,选择“添加View”
clip_image027
Step 2.2 在添加View的对话框中输入View名称“MyView”,取消选择“使用布局”的复选框,点击添加。
clip_image028
资源管理器重的Views/Test文件夹中会添加一个新的View文件。
clip_image029
Step3 在View中添加内容
打开MyView.cshtml 文件,并添加以下内容:
@{Layout = null;}
MyView
Welcome to MVC 5 Step by Step learning
Step 4. 运行 按F5键运行应用
clip_image030
实验二:Q&A
1. 为什么View会放在Test的文件夹中?
View是与放置在特定目录下的Controller相关。这个特定文件夹是以”ControllerName”命名的,并且放在View文件夹内
2. 在多个控制器中无法重用View吗?
当然可以,我们需要在将这些文件放在特定的Shared文件夹中。将View 放在Shared文件夹中所有的Controller都可用。
clip_image031
3. 单个Action 方法中可引用多个View吗?
可以,ASP.NET MVC的view和Controller不是严格的匹配的,一个Action Method可以引用多个view,而一个View也可以被一个Action方法使用如下代码所示:
1: public ActionResult GetView()
2: {
3: if(Some_Condition_Is_Matching)
4: {
5: return View("MyView");
6: }
7: else
8: {
9: return View("YourView");
10: }
11: }
4. View函数的功能是什么?
创建 ViewResult 对象将会渲染成视图来给用户反馈
ViewResult 创建了ViewPageActivator 对象
ViewResult 选择了正确的ViewEngine,并且会给ViewEngine的构造函数传ViewPageActivator对象的参数
ViewEngine 创建View类的对象
ViewEngine 调用View的RenderView 方法。
5. ActionResult和 ViewResult的关系是什么?
ActionResult是抽象类,而ViewResult是ActionResult的多级孩子节点,多级是因为ViewResult是ViewResultBase的子类,而ViewResultBase是ActionResult的孩子节点。
6. 什么是ContentResult?
ViewResult是HTML响应而ContentResult是标准的文本响应,仅返回字符串类型。区别就在于ContentResult是ActionResult的子类。
经过了本节MVC基础知识的学习,相信大家对MVC已经有了基本的认识。大家在进行ASP.NET MVC的开发时,还可以借助一些开发工具。ComponentOne Studio ASP.NET MVC 是一款轻量级控件,与Visual Studio无缝集成,完全与MVC6和ASP.NET 5.0兼容,将大幅提高工作效率。
下一节,我们将讨论模型,验证,Jquery和Json。所以请持续关注吧!ComponentOne Studio!
原文链接:http://www.codeproject.com/Articles/866143/Learn-MVC-step-by-step-in-days-Day
========
ASP.NET MVC5 网站开发实践 - 概述 http://www.cnblogs.com/mzwhj/p/3537145.html
前段时间一直在用MVC4写个网站开发的demo,由于刚开始学所有的代码都写在一个项目中,越写越混乱,到后来有些代码自己都理不清了。1月26日晚上在群里跟@怒放 他们讨论这个问题,结论是即使只是一个小demo也应该分层来写。正好看到别人在用MVC5写东西,喜新厌旧的我马上下载了Visual Studio 2013,幸好MVC4到MVC5变化不大,这次准备用MVC5重新写个Demo。 每次看以前写的代码总有把它丢进回收站的冲动,其实没有完美的代码,能解决问题的代码就算是好代码吧,但是我还是决定重新写一个学习的Demo,希望这次能有提高,希望这次能写完吧!
目录:
ASP.NET MVC5 网站开发实践 - 概述
ASP.NET MVC5 网站开发实践(一) - 项目框架
ASP.NET MVC5 网站开发实践(一) - 框架(续) 模型、数据存储、业务逻辑
ASP.NET MVC5 网站开发实践(二) - 用户部分(1)用户注册
ASP.NET MVC5 网站开发实践(二) - 用户部分(2)用户登录、注销
ASP.NET MVC5 网站开发实践(二) - 用户部分(3)修改资料、修改密码
ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理架构
ASP.NET MVC5 网站开发实践(二) Member区域 - 添加文章
ASP.NET MVC5 网站开发实践(二) Member区域 - 全部文章列表
ASP.NET MVC5 网站开发实践(二) Member区域 - 修改及删除文章
ASP.NET MVC5 网站开发实践(二) Member区域 - 咨询管理的架构
ASP.NET MVC5 网站开发实践(二) Member区域–我的咨询列表及添加咨询
ASP.NET MVC5 网站开发实践(二) Member区域–管理列表、回复及删除
一、开发环境
1、开发环境: Visual Studio 2013
2、数据库:Sql Server 2012
3、代码管理:TFS(微软免费提供的)
说明:VS2013与vs2012感觉变化不大,我下载的是Pro版,数据库为vs2013自带的的sqlserver数据库。代码管理使用的是微软免费提供的tfs(现在叫Visual Studio Online了,免费版包括5个用户,无限制团队项目和私有代码存储库,对个人来说足够用了),我是经常外地,使用别的电脑,使用tfs的目的一是代码共享;二是做个备份。
二、使用的技术
image
前4项为创建项目的默认添加的,对Easyui这个是否使用我一直没想好,有时候觉得作为网站项目,非管理软件能不用还是尽可能不用吧。
说下mvc5吧,看介绍mvc5跟MVC4变化不大。
1、One ASP.NET。这个是asp.net的新特性,不应是MVC的,大致意思是可以把Web Forms,MVC,Web API等糅合在一个项目中,mvc中可以添加webforms的东西,可以添加api,其他项目也如此。
2、ASP.NET Identity。全新的会员身分系统(membership),一个是基于OWIN,另一个是使用Entity Framework Code First來管理,可以自己扩展用户字段等。
3、Bootstrap。做界面的好咚咚。可惜我不懂,正好这次学习一下。
三、项目结构
Web项目:与用户进行交互的MVC项目。MVC中的试图和控制器部分,并适当定义视图与控制器间进行交互的试图模型(以ViewModel为后缀)。包含两个区域Member(用户区域),Manage(管理区域)。
Models项目:模型类,一般是与数据库或项目之间交互数据的的类(不包括试图模型)。
Common项目:放置一些公共方法,像加密,转换,生成验证码等。
IDAL项目:数据访问层接口,定义通过EF与数据库进行操作方法。
DAL项目:数据访问层,继承自IDAL并实现其定义的方法。
IBLL项目:业务逻辑层接口,定义通过调用数据访问层并进行处理为Web项目提供服务的方法。
BLL项目:业务逻辑层,继承自IBLL并实现其定义的方法。
========
解读ASP.NET 5 & MVC6系列 http://www.cnblogs.com/TomXu/p/4496545.html
本系列的大部分内容来自于微软源码的阅读和网络,大部分测试代码都是基于VS RC版本进行测试的。
解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介
解读ASP.NET 5 & MVC6系列(2):初识项目
解读ASP.NET 5 & MVC6系列(3):项目发布与部署
解读ASP.NET 5 & MVC6系列(4):核心技术与环境配置
解读ASP.NET 5 & MVC6系列(5):Configuration配置信息管理
解读ASP.NET 5 & MVC6系列(6):Middleware详解
解读ASP.NET 5 & MVC6系列(7):依赖注入
解读ASP.NET 5 & MVC6系列(8):Session与Caching
解读ASP.NET 5 & MVC6系列(9):日志框架
解读ASP.NET 5 & MVC6系列(10):Controller与Action
解读ASP.NET 5 & MVC6系列(11):Routing路由
解读ASP.NET 5 & MVC6系列(12):基于Lamda表达式的强类型Routing实现
解读ASP.NET 5 & MVC6系列(13):TagHelper
解读ASP.NET 5 & MVC6系列(14):View Component
解读ASP.NET 5 & MVC6系列(15):MvcOptions配置
解读ASP.NET 5 & MVC6系列(16):自定义View视图文件查找逻辑
解读ASP.NET 5 & MVC6系列(17):MVC中的其他新特性
========