Asp.net MVC十问十答[译]
1. Explain MVC (Model-View-Controller) in general?
MVC (Model-View-Controller) is an architectural software pattern that basically decouples various components of a web application. By using MVC pattern, we can develop applications that are more flexible to changes without affecting the other components of our application.
MVC是实现各种不同物体之间实现解耦的一种软件架构模式。利用MVC模式,我们可以开发出易于维护,同时不会影响到其他物体的应用来。
• "Model", is basically domain data.
Model,实际上代表 Domain 数据
• "View", is user interface to render domain data.
View,用于展示Domain数据的用户接口。
• "Controller", translates user actions into appropriate operations performed on model.
Controller,解释用户行为操控并提取数据进行相应。
2. What is ASP.NET MVC?
ASP.NET MVC is a web development framework from Microsoft that is based on MVC (Model-View-Controller) architectural design pattern. Microsoft has streamlined the development of MVC based applications using ASP.NET MVC framework.
Asp.net MVC是微软推出的一种基于MVC软件构架模式的网站开发框架。微软已经利用Asp.net mvc框架改进了传统的mvc的开发方式。
3. Difference between ASP.NET MVC and ASP.NET WebForms?
ASP.NET Web Forms uses Page controller pattern approach for rendering layout, whereas ASP.NET MVC uses Front controller approach. In case of Page controller approach, every page has its own controller i.e. code-behind file that processes the request. On the other hand, in ASP.NET MVC, a common controller for all pages processes the requests.
Asp.net Web Forms 利用Page Controller模式来进行展现,但是Asp.net mvc利用front Controller方式。对于Page Controller方式,每一个请求页面都会创建自己的Controller,他们会利用代码后置文件来处理请求。但是在Asp.net MVC中,一个普通的controller可以处理所有页面的所有请求。
4. What are the Core features of ASP.NET MVC?
Core features of ASP.NET MVC framework are:
•Clear separation of application concerns (Presentation and Business Logic)
•An extensible and pluggable framework
•Extensive support for ASP.NET Routing
•Support for existing ASP.NET features
Follow for detailed understanding of above mentioned core features.
Asp.net MVC框架的核心特色:
UI表示层和业务逻辑层隔离清晰,职责分明。
易于扩展和插件式开发。
完全支持Asp.net 路由。
支持已有的Asp.net 特性。
5. Can you please explain the request flow in ASP.NET MVC framework?
Request flow for ASP.NET MVC framework is as follows:
Request hits the controller coming from client. Controller plays its role and decides which model to use in order to serve the request. Further passing that model to view which then transforms the model and generate an appropriate response that is rendered to client.
用户请求首先会达到Controller,Controller将会决定使用哪个model来响应请求。为了将请求到的model发送出去,Controller会将请求到的model进行转换,然后生成准确的响应,最终传送给客户端。
6. What is Routing in ASP.NET MVC?
In case of a typical ASP.NET application, incoming requests are mapped to physical files such as .aspx file. ASP.NET MVC framework uses friendly URLs that more easily describe user’s action but not mapped to physical files.
对于传统的Asp.net应用来说,路由是 用户请求对物理文件的映射,比如对.aspx文件。在Asp.net MVC框架中,路由则使用了友好的URL的方式来描述用户行为,但是不会对物理文件产生映射。
ASP.NET MVC framework uses a routing engine, that maps URLs to controller classes. We can define routing rules for the engine, so that it can map incoming request URLs to appropriate controller.
Asp.net MVC框架使用了路由引擎,用来产生对Controller类的URL映射。我们可以指定路由访问规则,以便于能够将收到的URL请求映射到准确的Controller中。
Practically, when a user types a URL in a browser window for an ASP.NET MVC application and presses “go” button, routing engine uses routing rules that are defined in Global.asax file in order to parse the URL and find out the path of corresponding controller.
事实上,当用户在浏览器输入URL,然后点击“Go”按钮的时候,路由引擎使用配置在Global.asax文件中的路由规则去解析URL,以便于找到正确的Controller的访问路径。
7. What is the difference between ViewData, ViewBag and TempData?
In order to pass data from controller to view and in next subsequent request, ASP.NET MVC framework provides different options i.e. ViewData, ViewBag and TempData.
Both ViewBag and ViewData are used to to communicate between controller and corresponding view.But this communication is only for server call, it becomes null if redirect occurs. So, in short, its a mechanism to maintain state between controller and corresponding view.
ViewData is a dictionary object while ViewBag is a dynamic property (a new C# 4.0 feature). viewData being a dictionary object is accessible using strings as keys and also requires typecasting for complex types.On the other hand, ViewBag doesn't have typecasting and null checks.
TempData is also a dictionary object that stays for the time of an HTTP Request. So, Tempdata can be used to maintain data between redirects i.e from one controller to the other controller.
为了处理后续的controller到View的数据传送请求,asp.net mvc框架提供了不同的操作方式: ViewData,ViewBag以及TempData。
ViewBag和ViewData用于Controller和View之间的一致性传递。但是这种传递只在服务端使用,如果使用了Redirect方法,他们将会出现NULL值,所以,简单的说来,他们是用于维护controller和view之间状态一致性的一种机制。
ViewData是一种字典对象,但是ViewBag却拥有dynamic属性(C# 4.0的新特性)。 ViewData由于是字典对象,所以可以使用字符串作为键进行访问,但是当使用复杂类型作为键的时候,则需要进行类型转换。但是对于ViewBag来说,则无需进行类型转换和NULL值监测。
8. What are Action Methods in ASP.NET MVC?
As I already explained about request flow in ASP.NET MVC framework that request coming from client hits controller first. Actually MVC application determines the corresponding controller by using routing rules defined in Global.asax. And controllers have specific methods for each user actions. Each request coming to controller is for a specific Action Method. The following code example, “ShowBooks” is an example of an Action Method.
public ViewResult ShowBooks(int id)
{
var computerBook = db.Books.Where(p => P.BookID == id).First();
return View(computerBook);
}
由于我已经讲解了在Asp.net mvc 框架中的客户端请求到控制器的请求流程。事实上MVC应用会使用Global.asax中的路由规则来请求对应的控制器。 每一个用户操作都会有控制器中的方法与之对应。每一个到达控制器的请求都会有一个Action方法与之对应。下面的ShowBooks代码示例就是一个Action方法请求的例子:
public ViewResult ShowBooks(int id)
{
var computerBook = db.Books.Where(p => P.BookID == id).First();
return View(computerBook);
}
9.Explain the role of Model in ASP.NET MVC?
One of the core feature of ASP.NET MVC is that it separates the input and UI logic from business logic. Role of Model in ASP.NET MVC is to contain all application logic including validation, business and data access logic except view i.e. input and controller i.e UI logic.
Model is normally responsible for accessing data from some persistent medium like database and manipulate it.
Asp.net MVC的一个核心特性就是它解耦了业务处理和UI逻辑。在Asp.net MVC中,Model的角色就是用来处理所有的应用逻辑的,包括验证,业务逻辑,数据访问逻辑,但是数据展现则除外。也就是说input和controller包含其中,但是UIlogic排除在外。
10.What are Action Filters in ASP.NET MVC?
If we need to apply some specific logic before or after action methods, we use action filters. We can apply these action filters to a controller or a specific controller action. Action filters are basically custom classes that provide a mean for adding pre-action or post-action behavior to controller actions.
For example,
•Authorize filter can be used to restrict access to a specific user or a role.
•OutputCache filter can cache the output of a controller action for a specific duration.
如果我们需要在Action方法之前或者之后应用一些特殊的逻辑, 我们可以使用Action Filters。我们可以将这些Action Filters应用在Controller或者是controller中的action上面。事实上,Action Filters只是一个提供了添加方法执行前行为和方法执行后行为的规则的普通类。
比如说:
Authorize Filter可以对特定的用户或者角色进行访问限制验证。
OutputCache Filter可以对控制器方法进行缓存。
Asp.net MVC十问十答[译]的更多相关文章
- [译]Asp.net MVC 之 Contorllers(一)
Asp.net MVC contorllers 在Ajax全面开花的时代,ASP.NET Web Forms 开始慢慢变得落后.有人说,Ajax已经给了Asp.net致命一击.Ajax使越来越多的控制 ...
- [译]Asp.net MVC 之 Contorllers(二)
URL路由模块 取代URL重写 路由请求 URL路由模块的内部结构 应用程序路由 URL模式和路由 定义应用程序路由 处理路由 路由处理程序 处理物理文件请求 防止路由定义的URL 属性路由 书接上回 ...
- 【译】ASP.NET MVC 5 教程 - 11:Details 和 Delete 方法详解
原文:[译]ASP.NET MVC 5 教程 - 11:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一下自动生成的 Details 和Delete 方法. Details ...
- 【译】ASP.NET MVC 5 教程 - 10:添加验证
原文:[译]ASP.NET MVC 5 教程 - 10:添加验证 在本节中,我们将为Movie模型添加验证逻辑,并确认验证规则在用户试图使用程序创建和编辑电影时有效. DRY 原则 ASP.NET M ...
- 【译】ASP.NET MVC 5 教程 - 9:添加新字段
原文:[译]ASP.NET MVC 5 教程 - 9:添加新字段 在本节中,我们将使用Entity Framework Code First 数据迁移功能将模型类的改变应用到数据库中. 默认情况下,当 ...
- 【译】ASP.NET MVC 5 教程 - 8:搜索查询
原文:[译]ASP.NET MVC 5 教程 - 8:搜索查询 添加一个搜索的方法和搜索的视图 在本节中,我们为 Index 方法添加查询功能,使我们能够根据电影的题材或名称进行查找. 修改 Inde ...
- 【译】ASP.NET MVC 5 教程 - 7:Edit方法和Edit视图详解
原文:[译]ASP.NET MVC 5 教程 - 7:Edit方法和Edit视图详解 在本节中,我们继续研究生成的Edit方法和视图.但在研究之前,我们先将 release date 弄得好看一点.打 ...
- 【译】ASP.NET MVC 5 教程 - 6:通过控制器访问模型的数据
原文:[译]ASP.NET MVC 5 教程 - 6:通过控制器访问模型的数据 在本节中,你将新建一个MoviesController 类,并编写获取电影数据的代码,使用视图模板将数据展示在浏览器中. ...
- 【译】ASP.NET MVC 5 教程 - 5:使用 SQL 服务器 LocalDB 创建连接字符串
原文:[译]ASP.NET MVC 5 教程 - 5:使用 SQL 服务器 LocalDB 创建连接字符串 在上一节中,我们创建了MovieDBContext 类来连接数据库.处理Movie 对象和数 ...
随机推荐
- IOS开发-本地持久化存储sqlite应用
前言 需求描述 开发测试环境 FMDB介绍 创建工程 一.前言 上一章介绍了如何开发一个IOS应用的入门案例教程: 我的第一个IOS开发应用 本章主要将介 ...
- iOS开发之保存照片到自己创建的相簿
iOS开发之保存照片到自己创建的相簿 保存照片还可以用ALAssetsLibrary,ALAssetsLibrary提供了我们对iOS设备中的相片.视频的访问,是连接应用程序和相册之间访问的一个桥梁. ...
- 怎样在VS2010中打开VS2012的项目
VS2012中对C#的支持度非常好,不管是编写方便程度(不需要插件就能高亮代码及代码自动提示功能),还对MFC的一些功能优化很多. 我们可以修改两个工程文件来把VS2012的工程文件一直到VS2010 ...
- DP大作战——多重背包
题目描述 在之前的上机中,零崎已经出过了01背包和完全背包,也介绍了使用-1初始化容量限定背包必须装满这种小技巧,接下来的背包问题相对有些难度,可以说是01背包和完全背包的进阶问题. 多重背包:物品可 ...
- 在阿里云主机的Debian操作系统上安装Docker
因为需要新搭建饭团网站,所以需要在阿里云的主机上跑数据库,java环境. 考虑到可扩展性和模块化,所以准备最近流行的docker技术.Docker -- 从入门到实践 阿里云主机1核1G,资源不多,所 ...
- [转载] 关于PreparedStatement.addBatch()方法
Statement和PreparedStatement的区别就不多废话了,直接说PreparedStatement最重要的addbatch()结构的使用. 1.建立链接(打电话拨号) Connecti ...
- Cocos2d-x分类
Cocos2d-x win7 + vs2010 配置图文详解(亲测) Cocos2d-x建工程时避免copy文件夹和库
- ajaxFileUpload文件上传
一.简介 ajaxFileUpload是一种异步的文件上传控件,通过ajax进行文件上传,并获取上传处理结果.在很多时候我们需要使用到文件上传的功能,但是不需要使用那些强大的上传插件.此时就可以使用a ...
- [转]Linux下权限掩码umask
本文转自:http://www.cnblogs.com/123-/p/4188942.html ---------------------------------------------------- ...
- 通过反射获取SSM的controller层的注解以及注解中的value值
package com.reflection.test; import java.lang.annotation.Annotation; import java.lang.reflect.Invoca ...