前言:以前总说自己玩mvc,但是对mvc的认识还是不够透彻,也没有好好看微软自带的mvc项目中的精妙,最近闲了下来,好好看了看。

通过上图,我们可以清晰地了解到MVC 5应用程序的项目结构,接下来我们来依次解释下他们各自的应用。

App_Data: 该文件夹主要是包含应用程序的本地存储, 它通常以文件形式(如Microsoft SQL Server数据库文件, XML文件等)包含数据存储。

App_Start: 该文件夹包含应用程序的配置逻辑文件, 具体包括BundleConfig.cs, FilterConfig.cs, RouteConfig.cs, Startup.Auth.cs

BundleConfig.cs: 注册所使用的捆绑的CSS 和 JS文件。

FilterConfig.cs: 注册外部/全局过滤器,这些过滤器可以被应用到每个Action和Controller中去.

RouteConfig.cs: 配置MVC应用程序的系统路由路径。

Startup.Auth.cs: 配置MVC应用程序的安全信息,包括Authentication和Authorization配置以及第三方Authentication Provider

Content: 该文件夹被推荐用于存储静态内容文件类似CSS 和 (图片)Images

Controllers:顾名思义,该文件夹用于存储所有的控制器且控制器必须以"Controller"结尾。

fonts: 该文件夹用于存储MVC应用程序可能用到的字体文件

Models: 该文件夹用于存储应用程序实体模型类, 实体类可以定义对象以及应用程序逻辑。

Scripts: 该文件夹默认存储ASP.NET Ajax Foundation files和Jquery.主要被用来存储应用程序所支持的脚本(JS)文件.

Views: 该文件夹主要用来存储MVC应用程序所使用的布局文件(.master), 视图文件(.aspx)以及视图用户控件文件(.ascx)

细心的读者还会注意到Global.asax, Startup.cs(MVC 5应用程序新增加的) 以及Web.config.

Gobal.asax:

(摘自MSDN)这里的Global.asax主要是web应用程序的全局设置文件,该文件包含响应 ASP.NET 或HTTP模块所引发的应用程序级别和会话级别事件的代码。Global.asax 文件驻留在 ASP.NET 应用程序的根目录中。运行时,分析 Global.asax 并将其编译到一个动态生成的 .NET Framework 类,该类是从HttpApplication基类派生的。配置 ASP.NET,以便自动拒绝对 Global.asax 文件的任何直接的 URL 请求;外部用户不能下载或查看其中的代码。Global.asax 文件是可选的。只在希望处理应用程序事件或会话事件时,才应创建它.

Web.config:

((摘自MSDN)Web.config文件是一个XML文本文件,它用来储存ASP.NETWeb 应用程序的配置信息(如最常用的设置ASP.NETWeb 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。
在运行时对Web.config文件的修改不需要重启服务就可以生效(注: 节例外)。当然Web.config文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。

重点介绍下Startup.cs文件:

Startup.cs:

这个文件主要是提供给OWIN(Open Web Interface for .NEt)应用程序使用,OWIN的目的是为了解耦服务器应用程序。例如在ASP.NET Identity使用OWIN security, SignalR self hosting使用OWIN hosting等情况下, 我们的MVC应用程序都有使用到OWIN, 所以,他们都相应的会使用到startup.cs所定义的Startup class. 关于OWIN的应用这里不作详述,这里提到OWN主要是为了说明Startup.cs文件的使用.

Asp.net Mvc5的认识的更多相关文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)

    开发工具:VS2015(2012以上)+SQL2008R2以上数据库  您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB  升级后界面效果如下: 任务调度系统界面 http: ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入

    系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...

  3. 分享阿里云推荐码 IC1L2A,购买服务器可以直接打9折,另附阿里云服务器部署ASP.NET MVC5关键教程

    阿里云推荐码为:IC1L2A 阿里云还是不错滴. 以windows server 2008 R2为例,介绍如何从全新的服务器部署MVC5 站点. 新购买的阿里云服务器是没有IIS的,要安装IIS: 控 ...

  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(51)-系统升级

    系统很久没有更新内容了,期待已久的更新在今天发布了,最近花了2个月的时间每天一点点,从原有系统 MVC4+EF5+UNITY2.X+Quartz 2.0+easyui 1.3.4无缝接入 MVC5+E ...

  5. ASP.NET MVC5 ModelBinder

    什么是ModelBinding ASP.NET MVC中,所有的请求最终都会到达某个Controller中的某个Action并由该Action负责具体的处理和响应.为了能够正确处理请求,Action的 ...

  6. ASP.NET MVC5学习笔记01

    由于之前在项目中也使用MVC进行开发,但是具体是那个版本就不是很清楚了,但是我觉得大体的思想是相同的,只是版本高的在版本低的基础上增加了一些更加方便操作的东西.下面是我学习ASP.NET MVC5高级 ...

  7. ASP.NET MVC5 网站开发实践(二) Member区域–管理列表、回复及删除

    本来想接着上次把这篇写完的,没想到后来工作的一些事落下了,放假了赶紧补上. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一) - 项目框架 ASP ...

  8. ASP.NET MVC5 网站开发实践(二) Member区域–我的咨询列表及添加咨询

    上次把咨询的架构搭好了,现在分两次来完成咨询:1.用户部分,2管理部分.这次实现用户部分,包含两个功能,查看我的咨询和进行咨询. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NE ...

  9. ASP.NET MVC5 网站开发实践(二) Member区域 - 咨询管理的架构

    咨询.留言.投诉等功能是网站应具备的基本功能,可以加强管理员与用户的交流,在上次完成文章部分后,这次开始做Member区域的咨询功能(留言.投诉都是咨询).咨询跟文章非常相似,而且内容更少.更简单. ...

  10. ASP.NET MVC5 网站开发实践(二) Member区域 - 修改及删除文章

    上次做了显示文章列表,再实现修改和删除文章这部分内容就结束了,这次内容比较简单,由于做过了添加文章,修改文章非常类似,就是多了一个TryUpdateModel部分更新模型数据.   目录: ASP.N ...

随机推荐

  1. C# .ToString()格式化 常用数据转化小总结

    1.百分比 ; ; string p = ((double)i / j).ToString("P");//结果:200.00% p = string.Format("{0 ...

  2. TX大手笔做业务必然失败的原因

    首先说一个伪命题: 物体会向下落这是一个基本的定律,一个小小的物理规则会覆盖所有物体的行为准则. 那么,当地球上的所有东西都下落的时候,你指望整个地球,月球,太阳也会下落么? 事实上大家都知道星球在宇 ...

  3. 【CF700E】Cool Slogans 后缀自动机+线段树合并

    [CF700E]Cool Slogans 题意:给你一个字符串S,求一个最长的字符串序列$s_1,s_2,...,s_k$,满足$\forall s_i$是S的子串,且$s_i$在$s_{i-1}$里 ...

  4. 怎么在sublime/emmet中加自定义的内容-sublime使用心得(3)

    emmet中默认的h5的文档是这样的:   <!doctype html> <html lang="en"> <head> <meta c ...

  5. UEditor富文本WEB编辑器自定义默认值设置方法

    1.在使用UEditor编辑器编写内容时你会发现,当输入的内容较多时,编辑框的边框高度也会自动增加,若希望输入内容较多时以拉框滚动的效果. 方法:找到Ueditor文件根目录下的ueditor.con ...

  6. 转sklearn保存模型

    训练好了一个Model 以后总需要保存和再次预测, 所以保存和读取我们的sklearn model也是同样重要的一步. 比如,我们根据房源样本数据训练了一下房价模型,当用户输入自己的房子后,我们就需要 ...

  7. SqlServer数据库查询表信息/列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增/是否是主键/列描述)

    查询表信息(表名/表描述) Value ) AS value FROM sysobjects a Where a.xtype = 'U' AND a.name <> 'sysdiagram ...

  8. 170816、nginx常用配置说明

    #user nobody; #开启进程数 <=CPU数  worker_processes 1; #错误日志保存位置 #error_log logs/error.log; #error_log ...

  9. FastJson 对enum的 序列化(ordinal)和反序列化

    目前版本的fastjon默认对enum对象使用WriteEnumUsingName属性,因此会将enum值序列化为其Name. 使用WriteEnumUsingToString方法可以序列化时将Enu ...

  10. c++中inline函数的意义

    inline C++关键字,在函数声明或定义中函数返回类型前加上关键字inline,即可以把函数指定为内联函数.关键字inline必须与函数定义放在一起才能使函数成为内联,仅仅将inline放在函数声 ...