• 关于asp.net mvc 2.0 中 area的用法


    最近,看到很多的关注并使用asp.net mvc的网友,都在寻找一种分离网站前后台结构的方法。Asp.net mvc 1.0正式版,并没有给我们提供一种很好的解决方案。对于1.0正式版中,通常的做法,就是用命名前缀来解决的。比如:AdminProductController,UserProductController,ProductController,但是,此类的命名冗长,一旦项目庞大复杂,变得很臃肿难以管理。而且终究不是完美的解决方案。

    Asp.net mvc 2.0 preview 1,提供了一种解决方案:area。它是根据项目分离来实现的。所以,不敢保证未来正式版中也是这样,只能说,是临时解决方案。

    下面,我将具体列出几个步骤。展示area的用法。

    开发环境:VS2008 SP1,ASP.NET MVC 2.0 Preview 1

    添加项目的时候,不要添加测试项目,保持清洁。

    步骤 0 :

    新建一个Web项目,截图:主项目。

    clip_image002

    clip_image004

    步骤1:

    在解决方案上新建解决方案文件夹,取名Areas

    clip_image006

    在Areas解决方案文件夹里,添加一个新的web项目,最后管理员后台项目。

    clip_image008

    clip_image010

    步骤2:

    清除Areas下项目不需要的文件:

    清除AspnetMvcArea.Web.Admin项目下,一下一些文件:

    1. /Content 目录下文件及子文件夹

    2. /Scripts 目录下文件及子文件夹

    3. /Controllers 下文件及子文件夹

    4. /Views 下文件及之文件夹,但保留web.config文件。

    5. 删除项目Global文件。

    clip_image012

    步骤3:

    卸载项目:AspnetMvcArea.Web以及AspnetMvcArea.Web.Admin

    clip_image014

    步骤4:

    修改项目文件。

    1. 修改主项目:AspnetMvcArea.Web

    修改AspnetMvcArea.Web.csproj文件内容,用记事本之类的编辑器打开。

    取消一下图中的注解:

    A.

    clip_image016

    B.

    clip_image018

    2. 修改子项目:AspnetMvcArea.Web.Admin

    同上,取消下图中的注解:AspnetMvcArea.Web.Admin.csproj

    A.

    clip_image020

    B.注意,此处的需别。其实,英文写的很清楚了。

    clip_image022

    保存以上修改,退出。回到vs环境。

    步骤5. 重新加载项目。

    加载刚才卸载的两个项目。

    步骤6. 在子项目上,添加控制器及视图。

    1. 添加AccountController,就是为了和主项目默认添加的AccountController名称相同。

    2.在AccountController的Action上各自添加视图。

    clip_image024

    clip_image026

    LogOn:

    LogOff:

    步骤7:添加路由类库

    在解决方案上,添加一个类库: AspnetMvcArea.MapRoutes,并新建一个Routes静态类。

    clip_image028

    注意添加引用的版本:2.0

    Routes静态类内部:

    clip_image030

    步骤8. 在主项目AspnetMvcArea.Web中,添加AspnetMvcArea.Web.Admin和AspnetMvcArea.MapRoutes的引用。

    修改主项目AspnetMvcArea.Web中的Global文件

    clip_image032

    步骤9:在AspnetMvcArea.Web.Admin项目上,修改AccountController控制器的各个视图。

    1. Index视图

    clip_image034

    2. LogOn视图

    clip_image036

    3. LogOff视图

    clip_image038

    步骤10,基本以完成大部分了。现在就是修改一个连接。以便测试。

    1. 修改主项目Views/Shared/Site.Master

    clip_image040

    2.修改主项目Views/Shared/LogOnUserControl.ascx

    clip_image042

    步骤11:完结?

    当然,如果真的完成了,那也算完美。可惜。。。运行的时候,发现,area区域找不到视图。

    这个是视图定位问题。修改的办法,就是改Areas项目名称以及程序集名称和命名空间。全部和area名称保持一致。

    把AspnetMvcArea.Web.Admin项目的名称,程序集名称以及命名空间,全改为和定义的area名称一致:Admin。

    在编译项目的时候,会在主项目下,生成Areas文件夹,看下文件夹下的目录就明白了。至此,才算完成。
    当然,如果要保持命名规范。可以在不改动程序集名称和命名空间的情况下,只要把area名称改成如:AspnetMvcArea.Web.Admin也可以。就是前台写得时候,麻烦了点。
    为了书写上的方便,也可以把area名称保存在一个常量里。
    总之一句话:保持area名称和area项目程序集名称一致。命名空间可以不一致。

    Ps:注意同步修改Routes静态类下MapAreaRoute方法用到的命名空间参数。

    期待下个版本,不用这么麻烦。

  • 相关阅读:
    idea vue.js插件安装
    vue.js 开发环境配置
    Stream grouping-storm的流分组策略
    Kafka web console安装
    call 方法 (Function) (JavaScript)
    bind 方法 (Function) (JavaScript)
    CSS选择器、优先级和常用的选择器
    CSS3.0盒子模型:display:-webkit-box
    有了自己的博客了
    Javascript进阶篇——(DOM—节点---获取浏览器窗口可视区域大小+获取网页尺寸)—笔记整理
  • 原文地址:https://www.cnblogs.com/Dabai/p/1543474.html
Copyright © 2020-2023  润新知