当前位置 > 首页 > Asp.net

ASP.NET MVC3 Areas 分离项目 同名控制器(同名Controller) 演示demo

2012-9-11 10:37:00来源:Asp.net

为什么需要分离?

我们知道MVC项目各部分职责比较清晰,相比较ASP.NET Webform而言,MVC项目的业务逻辑和页面展现较好地分离开来,这样的做法有许多优点,比如可测试,易扩展等等。但是在实际的开发中,随着项目规模的不断扩大,Controller控制器也随之不断增多。如果在Controllers文件夹下面有超过两位数controller,即便采用良好的命名规范,或者用子文件夹的形式区分不同功能的控制器,还是会影响项目的可阅读性和可维护性。因此,在一些场景下,如果能把与某功能相关的文件分离到一个独立的项目中是非常有用的。Asp.Net MVC提供了Areas(区域)的概念达到这一目的。

项目解决方案

 

前台路由   前台显示页:/new/index   所属控制器:demo.Controllers.NewController

public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute("Default", "{controller}/{action}", new { controller = "Home", action = "Index" }, new string[] { "demo.Controllers" });

}

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();

RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}

后台路由  后台显示页 :/VIVI_HY_ADMIN/new/index  所属控制器:demo.Areas.VIVI_HY_ADMIN.Controllers

public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get { return "VIVI_HY_ADMIN"; }
}

public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute("VIVI_HY_ADMIN", "VIVI_HY_ADMIN/{controller}/{action}", new string[] { "demo.Areas.VIVI_HY_ADMIN.Controllers" });
}
}

 

 项目DEMO

    运行环境:  VS2010  MVC3  演示数据库:ACCRESS(MDB)

    DEMO下载地址

本文链接



  • Delegate在C#中的语法甜头(syntactic sugar)

    2007-2-1 13:54:00

    在享受着C#优雅的语法的时候,你还能记起为实现这种优雅语法而默默工作的后台编译器吗? 本文就Delegate在C#中的语法甜头(syntactic sugar)详细讲述了为实现这些语法甜头,编译器做

  • 庖丁解ASP.NET MVC内部运行流程

    2010-11-19 9:57:00

    跟大家分享两张ASP.MVC的内部运行流程图,作者都是 Steve Sanderson ,上面这张是07年MVC还未正式发布之前做成的流程图,虽然较老但是放到今天大部分仍然基本适用( 注意:图中有些

  • Visual WebGui revolutionary 6.4 Preview is around the corner

    2009-4-7 4:49:00

    Visual WebGui RIA Platform version 6.4 will be released as a preview version in the beginning of

  • LINQ to XML Quick Brain Dump

    2009-8-26 5:53:00

    LINQ to XML is a simple toolset that allows developers to easily interact with XML, whether it be i

  • WPF与缓动(二) 正弦与余弦缓动

    2007-5-17 15:10:00

    摘要: 如果要比二次缓动来得更平缓, 可以使用正弦或余弦缓动.这里介绍一下. 阅读全文 周银辉 2007-05-17 14:07 发表评论

  • Windows Vista桌面窗口管理器(3)

    2007-1-25 17:22:00

    摘要: 前面曾经提到过,通过WDDM可以支持Surface的跨进程共享。共享DirectX表面对于重定向DirectX应用程序非常重要。因为Vista必须要和以前的应用程序兼容,就必须支持以前用GD

  • asp.net mvc源码分析-RenderAction和RenderPartial

    2012-11-12 22:16:00

    截止上篇文章 asp.net mvc源码分析-ActionResult篇 RazorView.RenderView 相信大家对mvc的大致流程应该有所了解。现在我们来看看我们在mvc开发中用的最多的

  • 如此自动绑定数据到WebUI

    2007-4-9 16:59:00

    把数据绑定到控件,不知道大家用哪种方法?   很早之前,我一般在aspx中放置控件,在后台的代码中用代码直接给相应的控件设置属性的值。这样的方法优点是灵活,可以依据业务逻辑,灵活的设置控件的Text

  • SQLSever2005之Output子句用法

    2009-6-18 1:19:00

    在sqlserver中我们一般用output标志变量为输出参数,常用在存储过程返回某个值。 最近在写T-sql语句的时候同事向我介绍了output子句的用法。 假设现在有这样一张表t_u