MVC+Ext.net零基础学习记录(二)
很多人在开发一个新的项目时,需要先决定项目的整体架构,是决定使用MVC的同时也不例外,具体包含:项目的多语言性,项目的多风格选择,项目的可扩展性
其中项目的多语言性:http://www.cnblogs.com/coolcode/archive/2009/07/08/1519029.html,这是我所看到的比较好的解决方法
这里着重说一下MVC的Areas作用,相信几个基本的项目,都需要分为好几个模块,比如,仓库进销存管理,财务管理,人事管理,如果能够将这些模块,都分为不同的项目进行管理,需要的时候,整合起来,那也算比较完美的,为此MVC提供了Areas(区域)的概念达到这一目的。
具体操作是我参考的博客园里面的某个大神的文章,可惜的是,我找不到原地址了,这里只能大体的解释一下
比如我们现在要创建一个MVCSHOP的项目,其中分为前台购物+后台管理两个模块,
1 首先新建一个MVCSHOP的空白项目,在项目上右键->添加->Areas,输入"Admin"
2 在Areas/Admin/Controllers文件夹下面新建HomeController并添加一个Index的方法和对应的View文件。这里可 以发现Areas的另一个好处:你可以在不同Areas下面添加相同名称的Controller
3 在解决方案上面新建一个MVCSHOP.Admin的MVC3项目,并且删除Global.asax和Web.config两个文件
4 在MVCSHOP.Admin的根目录新建一个AdminAreaRegistration的类,输入如下内容:
public class AdminAreaRegistration : AreaRegistration { public override string AreaName { get { return "Admin"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Admin_default", "Admin/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional } ); } }
5 删除MVCSHOP项目/Areas/Admin文件夹下面的AdminAreaRegistration.cs文件以及Controllers文件夹(包括HomeController)
6 在MVCSHOP.Admin项目的Controllers里面新建一个HomeController
记得保留MVCSHOP/Areas/Admin下面的Views,并且在MVCSHOP项目里面引用MVCSHOP.Admin项目
7 现在运行程序并访问/Admin/Home/Index可以发现Admin项目生效了。这样,我们可以将所有的与后台管理相关的Controller都放到这个新的项目中来
8 为了使我们在MVCSHOP.Admin自动生成的View自动同步到MVCSHOP/Areas/Admin /Views文件夹中,可以使用“生成事件(Build Event)”里的“Post-Build Event”,打开MVCSHOP.Admin的属性,修改如下所示:
mkdir "$(SolutionDir)$(SolutionName)\Areas\Admin\Views" xcopy "$(ProjectDir)Views" "$(SolutionDir)$(SolutionName)\Areas\Admin\Views" /S /E /C /Y
意思就是,相信大家都能看得懂,就是完全复制MVCSHOP.Admin的Views文件夹下所有文件至MVCSHOP/Areas/Admin/Views中。
现在再次访问/Admin/Home/List就可以得到正确结果了,并且你可以发现List.cshtml已经被复制到MVCSHOP/Areas/Admin/Views/Home目录里。
MVC+Ext.net零基础学习记录(二)的更多相关文章
- MVC+Ext.net零基础学习记录(五)
继MVC+Ext.net零基础学习记录(四),在后面我在既有的项目上又添加了一个子项目,还用前面提到的方法,进行主项目中引用DLL,然后子项目中生成事件中使用mkdir 进行拷贝 发现一个下午就总是报 ...
- MVC+Ext.net零基础学习记录(四)
在上一篇文章[MVC+Ext.net零基础学习记录(三)]中提到了利用MVC的Area可以做到项目分离,但是实际操作起来还是有很多问题的.比如,对于物理资源的访问,会报:没有相关资源 开始的时候,我在 ...
- MVC+Ext.net零基础学习记录(一)
由于最近开发一个项目,决定使用MVC+EXT.NET,决定将学习的这个过程记录下来 本人和很多菜鸟一样,之前既没有使用过MVC开发,也没有接触过EXT.NET,所以这将是一个大家共同学习的过程,文章中 ...
- MVC+Ext.net零基础学习记录(三)
这里开始说明一下,如何在MVC项目中引用EXT.NET,这里参考:http://www.cnblogs.com/zhanghaomars/p/3470987.html
- salesforce 零基础学习(二十二)Test简单使用
本篇内容只是本人简单的mark开发中常出现的一些疑问,方便后期项目使用时奠定基础,如果对Test零基础童鞋,欢迎查看Test官方的使用介绍: https://help.salesforce.com/a ...
- salesforce 零基础学习(二十三)数据记录导出至excel(自定义报表导出)
我们都知道,报表有个功能为导出excel,但是有的时候客户需求往往标准的报表达不到,比如导出excel,其中本月修改的数据字段标红,如下图所示. 这就需要我们去写VF来实现此功能. 需求:将数据表记录 ...
- salesforce 零基础学习(二十八)使用ajax方式实现联动
之前的一篇介绍过关于salesforce手动配置关联关系实现PickList的联动效果,但是现实的开发中,很多数据不是定死的,应该通过ajax来动态获取,本篇讲述通过JavaScript Remoti ...
- salesforce 零基础学习(二十四)解析csv格式内容
salesforce中支持对csv格式的内容批量导入,可以使用dataloader,然而有些情况下,当用户没有相关权限使用dataloader导入情况下,就的需要使用VF和apex代码来搞定. 基本想 ...
- salesforce 零基础学习(二十)简单APP制作
本篇参考链接:https://developer.salesforce.com/trailhead/project/salesforce_developer_workshop 本篇讲述的是最简单的AP ...
随机推荐
- git工程迁移(修改提交服务器地址)方法
git remote set-url [--push] <name> <newurl> [<oldurl>]git remote set-url --add [-- ...
- 【音乐App】—— Vue-music 项目学习笔记:推荐页面开发
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 上一篇总结了项目概述.项目准备.页面骨架搭建.这一篇重点梳理推荐页面开发.项目github地址:https://github.com/66We ...
- struts2类型转换+校验
1.action中validate()与validateXxx() 用于action执行前的校验,如果校验失败,跳到input视图, 前者校验整个Action: 后者校验该Action中的Xxx方法. ...
- 【剑指Offer学习】【面试题37:两个链表的第一个公共结点】
题目:输入两个链表,找出它们的第一个公共结点. 链表结点定义 /** * 链表结点类 */ private static class ListNode { int val; ListNode next ...
- Shell脚本值:运算符
算术运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用. expr 是一款表达式计算工具,使用它能完成表达式的求值操作. 例如:实现两个 ...
- swiper的理解
参考:Swiper中文网 Swiper使用方法: <!DOCTYPE html> <html> <head> <meta charset="UTF- ...
- VueJS定义组件规则
Vue.js 组件 组件(Component)是 Vue.js 最强大的功能之一,组件可以扩展 HTML 元素,封装可重用的代码. 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的 ...
- Oracle:创建存储过程
1.无参存储过程 create or replace procedure test_procasv_total number(10);begin select count(*) into v_tot ...
- java中的双重锁定检查(Double Check Lock)
原文:http://www.infoq.com/cn/articles/double-checked-locking-with-delay-initialization#theCommentsSect ...
- C# 杀掉后台进程
var p = Process.GetProcessesByName("WINWORD"); if (p.Any()) { for (int i = 0; i < p.Len ...