在上一篇文章【MVC+Ext.net零基础学习记录(三)】中提到了利用MVC的Area可以做到项目分离,但是实际操作起来还是有很多问题的。比如,对于物理资源的访问,会报:没有相关资源
开始的时候,我在博客园也搜索到了很多解决方案,其中http://www.cnblogs.com/dingji/archive/2012/06/10/2544255.html这篇文章的解决方法是我感觉最有效的解决方法
但是我思考了很久,还是决定不采用MvcContrib进行分离,因为这样的话,一个问题是,DLL文件到后来会很大,因为前台项目里面的图片以及各种框架的引用会很多。另一个原因是感觉为了实现分离,而将静态资源均编译成dll,感觉有点得不偿失
所以到最后,我采用了一种折中的方法,将部分文件比如View里面的内容均通过【生成事件】来拷贝到主项目中,而其他的部分,比如整体框架的JS部分,则更改从项目的引用路径。而例如语言资源文件,则公用一个文件。
具体做法如下:
1 按照上一篇文章【MVC+Ext.net零基础学习记录(三)】,进行基本的项目分离
2 将从项目的JS,css引用路径改成相对项目的绝对路径,
原来的写法:<script type="text/javascript" src="../../Scripts/Framework/jquery.js"></script>
改后的写法:<script type="text/javascript" src="/Scripts/Framework/jquery.js"></script>
这里的改写是因为,对于主项目调用从项目里面的画面时,目录其实是.../从项目Area名称/调用画面文件夹/画面名,这里如果采用相对路径,则会自动变成Area/...,会提示找不到文件
,而改写后,则不管项目中的什么路径下的文件引用改物理资源,都是相对整个项目的根目录而言的
3 修改从项目的生成事件
mkdir "$(SolutionDir)$(SolutionName)\Scripts\PageJS"
xcopy "$(ProjectDir)Scripts\PageJS" "$(SolutionDir)$(SolutionName)\Scripts\PageJS" /S /E /C /Y
这里的代码,应该大家都知道,就是在上一篇文章的基础上,另外复制从项目的JS文件到主项目的相对一致的路径上
4 汇总公共类库
因为时间关系,所以记录的比较简单,如果有相同需求的童鞋,可以联系我,相互切磋嘛