专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > ASP

22、ASP.NET MVC入门到精通——筹建项目框架

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
22、ASP.NET MVC入门到精通——搭建项目框架

本系列目录:ASP.NET MVC4入门到精通系列目录汇总

前面的章节,说了ASP.NET MVC项目中常用的一些技术和知识点,更多的是理论上面的东西,接下来,我将通过一个简单的OA项目来应用我们之前涉及到的一些技术,为了兼顾初学者,所以我尽量把操作步骤说得足够详细。(本来想用VS2015来演示MVC5开发的,无奈家里的笔记本是11年2月份的老爷机了,一直未曾舍得换,因为配置的缘故,笔记本不堪负重,难以安装最新版本的开发工具,只装了VS2012,当然,还有一个原因就是现在公司也是使用VS2012和MVC4。

开发环境:win7 64bitVS2012sqlserver2008

使用框架:asp.net mvc4 EF5spring.net easyUI1.4x

1、新建空白解决方案

2新建解决方案文件夹

新建解决方案文件夹可以分类打包一些项目,让整个项目变得更清晰。

 

Common:基础架构、包含一些通用的组件,以及IOC容器

Repository:数据仓储

Service:服务层(业务逻辑和API接口)

UI:界面(MVC项目)

3、新建MVC项目

右键点击UI文件夹,新建项目

 

 

为了把控制器单独作为一个项目,这里我们删除Controller文件夹

 

4、新建一个类库,来作为UI的业务逻辑层,还是建在UI目录下面

 

现在我突然想改项目的名称,把OA改为Web,这个时候,先在解决方案中直接重命名项目名称,然后移除此项目,再去解决方案目录下面找到该项目对应的文件夹OA,将文件夹名称改为OA,最后重新添加项目的引用,就可以了。

5、依次建立好其它项目,除了Web项目外,其它的均为类库项目,最终如下图:

 

Web.Logic就相当于独立的Controller项目

创建数据库,请先下载sql脚本(下载地址:http://pan.baidu.com/s/1OLxQA),然后在sqlserver上面运行。此sql脚本是从网上下载的,是一个OA的数据库。

6、新建实体数据模型

 

 

7、修改配置文件

由于Web项目中会用到全局的配置,所以把App.config中的配置复制到Web项目中的Web.config

 

8、添加项目之间的引用

Model

IDAL-->Model

DAL-->IDALModel

IBLL-->Model

BLL-->IBLLIDALModelDI

Web.Logic-->IBLLModelDI

Web-->Web.LogicModel

 右键单击解决方案——项目依赖项,可以查看项目之间的引用

9、新建控制器

既然Web.Logic充当了独立的控制器层,那么先要添加System.Web.MvcSystem.Web的引用,从扩展里面选择的dll,是在C盘mvc的安装目录下面的dll,当然,你也可以点击浏览,指定你需要的dll,但是要注意版本。

 

我们来新建一个Home控制器类,根据约定大于配置原则,我们命名为HomeController

代码如下:

using System.Web;
using System.Web.Mvc; 

namespace OA.Logic
{
   public class HomeController:Controller
    {
       public ActionResult Index()
       {
           return View();
       }
    }
}

10、在Web-项目中新建视图

Views中新建一个和控制器同名的文件夹Home,然后添加一个Index视图

 

Index视图代码:

@{
    ViewBag.Title = "Index";
}
<h2>Hello world</h2>

将Web项目设置为启动项,Build解决方案,然后我们运行看下效果

 

可能有些朋友会感觉奇怪,我Web项目中都没有任何控制器类,为什么我一起动项目就能自动跳转到我们刚才创建的Index视图呢?

首先,我们Web项目中的默认路由是   defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

而当Web启动时,路由引擎会自动到Web项目中的bin目录下面查找所有dll中继承Controller的类,然后一一进行路由匹配。

由于Web项目引用了OA.Logic项目,所以bin目录下面存在OA.Logic.dll

为了优化路由匹配,我们还可以指定命名空间,这样的话,就只会在指定的命名空间下面去匹配了,不需要遍历bin目录下面所有dll下面的所以类一个一个去匹配。

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 },
                namespaces: new string[1] { "Web.Logic" } //指定Controller所在命名空间
            );
        }

 一下子就零点了,先洗洗睡了,最近深圳真冷,555~ 未完,待续....

5楼其实我不笨
感谢lz,期待lz更新。。。。谢谢了。。。辛苦了
4楼玩吧华华
请教一下,Controller单独抽一层的好处是什么了?主要控制器本身并不通过。
Re: 邹琼俊
@玩吧华华,Controller单独放置在一个项目有它的许多优点,比如可以在多个项目中复用这些代码,易于维护等等。但是也有一些不好地方,比如不能通过右键从Controller的Action跳转到对应的视图,也不能从一个视图通过右键跳到到对应的Action方法中,具体你要根据实际情况灵活的选择。
3楼郭小宅
关注
2楼失落的野火
楼主,什么时候更新呢
Re: 邹琼俊
@失落的野火,正在写了,今天会更新...
1楼二十二号同学
想问问你的。编辑区的背景怎么加上去的。,你这一天天的。对着美女敲键盘。,何等的。。。。。。JQ
Re: 邹琼俊
@二十二号同学,请参见我的这篇博文,里面有具体的设置:http://www.cnblogs.com/jiekzou/p/4487859.html
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • ASP怎么隐藏表单

    ASP如何隐藏表单 <%if Cookies_Toy ="" then response.write "<a href='login.asp'>登录</a> <a href='reg.asp'>注册</a>" ...

  • 为何js调用css脚本后没效果

    为什么js调用css脚本后没效果 这个是css的脚本代码: body,ul,li{margin: 0; padding: 0; border: 0;} body {background: #f5f...

  • 怎么伪造post请求,求指点。

    如何伪造post请求,求指点。。。 要查询大批(也就几万个)运单的状态,那查询网站一次最多查24个,这一个个搞会搞死人的。。 有...

  • Asp.net_简略代码设置GridView自适应列宽不变形

    Asp.net_简单代码设置GridView自适应列宽不变形 动态绑定的GridView由于列数不固定,而列又太多(博主做的这个项目有150个左右的字段...

  • ASP.NET上实现AJAX注册提醒

    ASP.NET下实现AJAX注册提醒 Ajax全称是,主要是利用JavaScript实现异步的数据传输,首先说异步,异步是当前操作进行的时候,用...

  • aspnet_regiis装配出错:0x80070005 拒绝访问

    aspnet_regiis安装出错:0x80070005 拒绝访问 点击右边红色标题查看本文完整版:aspnet_regiis安装出错:0x80070005 拒绝访问安装...

  • 关于网站边框解决方法

    关于网站边框 像hao123这样的网站上的边框是着么弄的?背景图片吗?http://www.hao123.com 另外哪个素材网站有实用的这内素材 -----...

  • ! 多表分组查询统计

    求助!! 多表分组查询统计 高手们,帮帮忙! 用户表 D_user 为 ID Username GroupID 1 张三 2 2 李四 2 3 王五 ...

  • 在Paypal交付的同时,把表单的数据提交给数据库

    在Paypal提交的同时,把表单的数据提交给数据库 本帖最后由 liuyang2708 于 2012-11-20 23:14:54 编辑 在提交这个支付...

  • 虚拟目录上JavaScript不能正常执行

    虚拟目录下JavaScript不能正常执行 各位大侠好,我在同一台服务器上用两种方式部署同一个网站。 第一种方法:在IIS下直接建一个网站...

热门推荐: