代码改变世界

MVC+EF+架构设计(二)

2012-06-09 10:53  天涯~  阅读(2044)  评论(2编辑  收藏  举报

貌似MVC现在比较热闹,所以,在这个项目中我也采取了MVC,但是MVC的Controller总是包含在站点文件夹中,这个总让我很不爽,至于为什么不爽,个人总感觉Controller是个页面的逻辑部分,一般在以前我们总放在aspx.cs文件中,但是mvc没有这个aspx.cs文件,所以,索性我们把这部分单独出来建立了CinDou.Route这个项目

为了使这个Controller能单独出来,我们必须还要做一些其它的工作:

Step1:在CinDou.Tools中建立

IRegisterRoutes.cs

using System.Web.Routing;

namespace CinDou.Tools
{
    interface IRegisterRoutes
    {
        void RegisterRoutes(RouteCollection Routes);
    }
}

CinDouRoutes.cs

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

namespace CinDou.Tools
{
    class CinDouRoutes : IRegisterRoutes
    {
        public void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );
        }
    }
}

CinDouApplication.cs

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

namespace CinDou.Tools
{
    public class CinDouApplication : HttpApplication
    {
        protected void Application_Start()
        {
            CinDouRoutes pdr = new CinDouRoutes();
            AreaRegistration.RegisterAllAreas();
            pdr.RegisterRoutes(RouteTable.Routes);
        }
    }
}

我们在CinDou.Tools中建立好这三个文件后,然后在CinDou.Web中引用这个Dll即可。 同时,我们修改Global.asax文件使其指向我们刚刚建立的CinDouApplication文件。右键点击Global.asax文件,点"查看标记”然后修改为:

<%@ Application Inherits="CinDou.Tools.CinDouApplication" Language="C#" %>


我们在CinDou.Route中创建创建的ProductController就能起作用了~