首先,新建一个MVC项目,由于我的服务器上只安装了.Net4.0 因此选择4.0的Framework。项目建立完成后,我们可以在右边看到这样的目录结构。
其中Global.asax为整个程序的入口
AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles);
这四个配置文件的注册分别对应到了App_Start中的四个文件
Bundle的作用是将你所使用的css或者js文件合并到一起,解决浏览器只能同时加载6个链接的限制,加快网站的访问速度。
Filter的作用是定义过滤器,在每个action前面可以加上限定的filter,例如[HttpPost],限制这个action只能通过post方式访问。
Route则是网站访问的路由规则。
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
url中显示了访问方式。默认为website/Home/Index
controller对应Controlllers文件夹下的Controller,action则对应每个controller中的动作,id则为要传入的参数。
我们可以看到controller和view的对应关系如下
每个controller对应一个view中的文件夹,每个方法对应文件夹中的cshtml页面。
这是一个简单的返回主页视图的方法,我们可以通过ViewBag与cshtml页面进行数据交互。(X-real-ip为我在nginx中定义的访问IP的header)
在对应的index.cshtml中,我们同样可以使用@ViewBag.ip获取传过来的数据。
当我们运行网站的时候我们的ip就会显示在<h1>标签上了
在Views文件夹中,还有一个_Layout.cshtml
前面加 _ 表示不能被直接访问,layout.cshtml则为模板页,我们可以在这里定义整个网站的header以及footer,同时引用所有的css以及js文件,再通过@RenderBody()加载中间内容。