从ASP.NET MVC第一个版本开始到现在,创建ASP.NET MVC项目的官方方法只有一个,“文件”->“新建”->“项目”,然后选择ASP.NET MVC X Web应用程序。

这种方式当然有其好处,但是很多时候,网站项目(WebSite)而不是Web应用程序(WebProject)更适合大型网站,能更充分的利用ASP.NET的优势,创建可伸缩性更好的网站出来。

其实说到底,ASP.NET MVC也不过就是一个ASP.NET的一个扩展框架而已,所以网站项目当然也能用上MVC,并且,可以用的更好。

事实上,在Jumony的项目中,关于Jumony for MVC的范例就是用的网站项目而不是Web应用程序。

接下来,我就用VS2010 + ASP.NET 4(包含 MVC 2)来演示如何在网站项目用上ASP.NET MVC。

那么首先,我们先要创建一个解决方案和一个网站(似乎是废话),像下面这样:

因为我使用了VS的一个插件,所以解决方案浏览器可能与你电脑上的看起来不太一样,不要担心,这是正常的。

然后,其实除了Global.asax和web.config之外的所有东西都是多余的,删除之,我们得到了一个空白的网站:

继续,我们为网站添加ASP.NET MVC框架的引用,这里我添加的是ASP.NET MVC 2的,其实也就一个System.Web.Mvc:

添加后应该在web.config中能看到这一引用:

然后我们添加一个Controller,Controller是一个类型,我们直接为网站项目添加一个TestController类型就可以了(注意Controller类型名称必须以Controller结尾):

然后会提示要不要把类型文件放在App_Code,那么显然,然后网站像这样:

注意请一定要将代码文件放在App_Code中,或者引用的第三方项目中,否则不是一个合法的网站项目,这和WebProject是完全不同的。

我们修改TestController类,使其继承于Controller,删去默认的构造函数,然后随便弄一个Action出来,所谓Action就是返回ActionResult的一个方法而已:

接下来是配置路由,先给网站添加另一个项目的引用:System.Web.Routing,方法与添加System.Web.Mvc一样,不再赘述。

然后打开global.asax文件,在App_Start方法中添加路由注册的代码,像这样:

注意上面的@Import指令,如果你没有智能提示,或是没有看到MapRoute这个扩展方法,检查一下是不是有这个Import。

每个页面都添加@Import指令是非常麻烦的,所以我们可以在web.config中稍作配置:

这是我修改后的web.config文件,我删去了其他所有的乱七八糟的东西。

接下来就可以测试一下路由是不是正确了,如果你完全依照上面的方法做了的话,现在右击网站,选择在浏览器中查看,应该会看到这样一个页面:

如果是404错误或者其他错误,请检查是不是设置了什么起始页之类,或是web.config配置有误。

OK,我现在假定你看到了和我看到的一样的错误页,这个错误页说明我们已经成功部署了MVC环境,但还缺最后一个东西,“视图”。

接下来在网站根目录创建一个Views目录,接着在里面创建Test子目录,往里面添加一个Test.aspx文件:

请注意不要勾选那个将代码放在单独的文件中,那个是默认勾选的,如果不出意外,现在的网站结构是这样的了:

但这个aspx文件还不能直接当作MVC的视图,因为MVC默认的WebFormViewEngine对视图页还有一些特殊的要求,但事实上也很简单,只需要打开这个aspx文件,把@Page指令像下面这样修改就可以了:

没错,MVC的视图页必须从ViewPage继承。

然后我还顺便修改了一下这个页面,使得它会呈现一个Hello MVC字符串。那么这时候,再选择在浏览器中查看网站,就应该呈现为下面这个样子了:

到 这里,整个ASP.NET MVC框架就完全在网站项目中部署成功了。本文其实只是一篇授人以鱼的文章,大家在一步步的部署成功ASP.NET MVC网站(而不是WebProject)后,可以思考每一个步骤的必要性和目的。真正做到知其然还知其所以然。也可以尝试不要把Controller放 在App_Code文件夹中,而是放在第三方引用项目中,这样能够创建出伸缩性更好的网站结构。

用网站(WebSite而不是WebProject)项目构建ASP.NET MVC网站相关推荐

  1. 监测ASP.NET MVC 网站

    使用MiniProfiler调试ASP.NET MVC网站性能,MiniProfiler可以很好的处理网站后端每个处理时间的事件,但是MiniProfiler是无法远程做监测的动作,MiniProfi ...

  2. 使用Glimpse 监测ASP.NET MVC网站

    使用MiniProfiler调试ASP.NET MVC网站性能,MiniProfiler可以很好的处理网站后端每个处理时间的事件,但是MiniProfiler是无法远程做监测的动作,MiniProfi ...

  3. 阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅

    做了多年的Web开发工作,网站部署也不在话下,可每次部署却并不是十分顺利,将本次在阿里云服务器上部署asp.net mvc网站遇到的问题记录如下. 平台是阿里云ECS,操作系统是 Windows Se ...

  4. 利用Powershell自动部署asp.net mvc网站项目 (一)

    这一篇中我们会写一些关于自动化部署的代码.我们会使用 Powershell 书写这类代码. 你将发现这篇文章中涉及的东西非常具体,有的要求甚至相当苛刻且可能不具有通用性.这是因为部署从来都是跟环境打交 ...

  5. 总结一下ASP.NET MVC 网站的部署问题

    近日,准备把MVC建了一个新的测试站点部署到IIS上面,结果没想到出现了一系列的问题和错误,准备记录一下. 第一个问题,就是如何将MVC的站点部署到IIS上去? 现在我的系统是Windows 7,II ...

  6. 针对Linux ASP.NET MVC网站中 httpHandlers配置无效的解决方案

    近期有Linux ASP.NET用户反映,在MVC网站的Web.config中添加 httpHandlers 配置用于处理自定义类型,但是在运行中并没有产生预期的效果,服务器返回了404(找不到网页) ...

  7. [转]Asp.net mvc 网站之速度优化 -- 页面缓存

    网站速度优化的一般方法 由于网站最重要的用户体验就是速度,特别是对于电子商务网站而言. 一般网站速度优化会涉及到几个方面: 1. 数据库优化 - 查询字段简历索引,使用数据库连接池和持久化,现在还有种 ...

  8. ASP.NET MVC网站使用新浪微博账号登录

    首先到http://open.weibo.com/development 注册一个开发者账号. 然后可以点微连接--网站接入 会分配App Key 和App Secret 然后点高级信息 在这里设置回 ...

  9. ASP.NET MVC网站学习问题积累(一)

    最近工作压力比较大,不得已开始自学C#.同时网站开发业务开展迫在眉睫,只能先从ASP.NET学起.回想一下,连C#和ASP.NET的关系都没有明白,就被赶鸭子上架了...我觉得这将是我工作以来最具有戏 ...

  10. asp.net mvc 网站生成二维码

    网上有很多使用  Javascript 二维码生成库 ,我参考  https://c.runoob.com/ 写了一个简单的例子,本人菜鸟,写错请见谅 @{Layout = null; }<!D ...

最新文章

  1. ffmepg4 解码特别慢
  2. 视频up主测试显卡的软件,一个视频UP主亲身体验:5600X不讲武德,视频剪辑实测...
  3. 业界首个高性能交互式自动标注工具EISeg正式开源,跨越式提升你的标注体验...
  4. 数据挖掘(data mining),机器学习(machine learning),和人工智能(AI)的区别是什么? 数据科学(data science)和商业分析(business analytics
  5. JavaWeb学习总结(十二):Session
  6. Android平台发展史
  7. [0716] Jsoi B Rsss
  8. C语言程序所以,C语言程序(1)
  9. Elasticserch学习之分页
  10. 踩坑日记(二):记一次线上业务—Redis 的缓存雪崩
  11. 天涯明月刀服务器维护,天涯明月刀手游维护时间表一览,维护什么时候结束?[多图]...
  12. 洛谷试炼场---提高历练地 普及练习场 新手村 入门难度
  13. 重装系统,只需一行命令,一键激活win10家庭版。清理电脑缓存垃圾。
  14. 可调背光板(二)__DW01FA锂电池保护IC电路
  15. 真无线蓝牙耳机选购小技巧!2020五款优秀低延迟蓝牙耳机推荐
  16. 模型驱动PDR、数据驱动PDR实验效果对比
  17. 5/17/2015 今週日本語勉強の纏め
  18. 晴天小猪历险记之Hill
  19. 比脸软件测试自学,【AI测试学习】FakeApp, Faceswap, DeepFaceLab等Deepfakes换脸程序的简单对比 (转)...
  20. 甘肃环县村民迁新居不弃良田 建“自乐班”融洽村邻

热门文章

  1. oracle sysman 不存在_Oracle数据库中SYS、SYSTEM、DBSNMP、SYSMAN四用户的区别
  2. python中debug和run有什么区别_android应用程序开发中run和debug 有什么区别?
  3. java展开式的菜单_ListView点击Item展开菜单实现代码详解
  4. docker常用功能操作记录5
  5. x12arima季节调整方法_又到了戴贝雷帽的季节,不同发型的佩戴方法,让你秒变时髦精...
  6. c语言怎么添加搜索功能,C语言实现二叉搜索树的创建、插入、删除和查找
  7. 【翻译】CodeMix使用教程(四):调试
  8. ansible笔记(4):常用模块之文件操作
  9. 用session做权限控制
  10. Java检查日期格式是否正确