- A+
新建项目
打开VS2015,找到菜单项[文件->新建->项目],打开向导对话框:
注意我们的选择项:
- 运行平台:.NET FrameWork 4.5
- 项目模板:ASP.NET Web Application (.NET Framework)
- 项目名称:AspNetMvc.QuickStart,如果你在跟着本教程练习,建议起相同的项目名称,方便直接拷贝代码到你的项目中。
点击[确定]按钮,向导会带我们到另一个选择对话框:
由于本教程是快速入门,所以我们从最简单的入手,只勾选必需的选项:
- 不进行身份验证。ASP.NET MVC提供了完善的身份验证方案,我们会有单独的文章讲解。
- 仅勾选 MVC 引用。
点击[确定],VS2015会创建一个可直接运行的项目,按下快捷键[Ctrl+F5],不调试直接运行:
默认的目录结构如下:
如果你之前在WebForms下进行开发,对其中的一些文件夹和文件应该很熟悉了:
- Web.config:项目配置文件,里面保存项目配置参数以及数据库连接字符串。
- packages.config:Nuget配置文件
- Global.asax:全局代码文件,提供应用程序级别以及会话级别的事件处理函数,可以在Application_Start中注册全局变量。
- favicon.ico:浏览器地址栏图标,在HTML的head标签中引用。
- App_Data:放置本地数据库文件,比如LocalDB生成的数据库文件。
下面几个文件夹,用来放置静态文件,从名称就可以方便的猜出其用途:
- Scripts:放置静态脚本文件,比如jQuery等。
- fonts:放置图标字体文件,比如流行的FontAwesome字体等。
- Content:放置静态文件,比如xml文件、Bootstrap的CSS库。
下面几个文件是ASP.NET MVC新引入的:
- App_Start:用来放置应用初始化类,这个是MVC4引入的一个命名约定,其实这就是一个普通的文件夹,没有特殊的含义。
- Controllers:控制器类。
- Models:模型类,比如EF CodeFirst的模型定义。
- Views:视图文件,最初的视图引擎是WebForms View Engine,使用和ASPX文件相同的语法,而现在用的Razor视图引擎是MVC3引入的,以cshtml为后缀。
页面流程
首先看下 [About]页面:
这个页面之所以能够呈现在我们眼前,经历了三个主要流程:
- MVC的路由引擎根据URL查找相应的控制器(HomeController.cs)。
- 控制器的操作方法About准备数据,然后传入视图Home/About.cshtml。
- 视图准备HTML片段,放入布局页面并返回浏览器。
路由引擎->控制器
一切还得从Global.asax中说起,在其中的应用程序启用事件中,我们需要注册路由处理器:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
RouteConfig.cs类位于App_Start文件夹中,我们来看下内容:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
这里注册一个名为Default的路由规则,对应的URL是{controller}/{action}/{id},这里三个占位符分别表示:
- {controller}:控制器,默认是Home,对应的控制器类是HomeController.cs。
- {action}:控制器里面的方法,默认是Index。所以如果用户直接通过http://localhost/访问系统时,默认调用Home控制器中的Index方法处理。
- {id}:参数ID,可选项,这个参数对应于操作方法中的id参数。
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫