登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
为ASP.NET MVC RC分离Controllers-Views项目后添加“脚 ...
为ASP.NET MVC RC分离Controllers-Views项目后添加“脚手架”功能(一)
[ 复制链接 ]
溥价
2025-5-30 01:24:24
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
连续忙了好几个月,好久没有写东西了,最近稍微有点空,空闲的时候回到了对ASP.NET MVC RC(以下简称MVC RC)的研究上来。MVC RC的“脚手架(Scaffold)”功能可以说为MVC RC的开发如虎添翼,不过应用到真实的开发环境中似乎存在一些遗憾的地方:很多时候我们并不希望把Models、Views和Controllers放在同一个项目里面,而是把它们分离到不同的项目,然后由一个项目(比如Views)统一引用其他所有的项目程序集。但是这样做了以后,Controllers项目中脚手架的功能就“消失了”。
在Web(MVC RC)项目中,我们可以这样在Web项目中使用脚手架创建View页面:
或者创建Controller文件:
甚至可以在
Controller
文件中自动创建或者查看对应
Action
的
View
页面:
不过这一切经历了Views和Controllers的“生死离别”之后,就再也无法在Controllers中使用了(原因会在下文中说明)。下面我们来做一个测试。
首先我们先把M、V、C三层分离,比如这样:
需要注意的是当这样做的时候,在Controllers项目中需要引用以下这三个核心的程序集:
System.Web.Abstractions.dll
System.Web.Mvc.dll
System.Web.Routing.dll
以及一些在默认的Controller.cs文件中被引用到的命名空间,如:
System.Web
System.Configuration
以下是分离M-V-C(M之所以也要分离出去是因为C需要引用M,而C不能引用V)之后,运行的默认界面,说明这样的分离是成功的:
OK
,到此为止
MVC
工作正常,只不过……无法在
MyMvc.Controllers
中使用
MVC
的脚手架:
分析一下原因:我们在把Controller分离出来的时候是建了“类库(Class Library)”,一个普通的类库当然无法使用MVC(Web)的脚手架,于是我打开了MyMvc.Web的项目文件MyMvc.Web.csproj,用记事本打开这个文件(本质上是一个XML文件),发现了一个和其他项目与众不同的地方:
{603c0e0b-db56-11dc-be95-000d561079b0};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
这个节点中用分号分割了3段看似Guid的代码,分别是:
{603c0e0b-db56-11dc-be95-000d561079b0}
{349c5851-65df-11da-9384-00065b846f21}
{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
立刻对比了一下MyMvc.Controllers下面的MyMvc.Controllers. csproj,发现没有这个节点。喜出望外!于是马上将这个节点复制到MyMvc.Controllers. csproj对应的地方,重新加载项目以后,发现MyMvc.Controllers的脚手架功能回来了!
不过通过这样简单的添加还是发现了一些小小的瑕疵:细观
MyMvc.Controller
的项目图标类型,怎么和
Web
的时一样的(下图)?不爽。
看来这样的直接复制是把整个MVC Web Application下面的类型都一起复制过来了,为了避免日后不必要的麻烦,还是需要让Controllers变回“类库”,于是打起了那三个Guid的注意,经过两次两两搭配后({fae04ec0-301f-11d3-bf4b-00c04f79efbc}一定要保留)发现,只要删除中间的{349c5851-65df-11da-9384-00065b846f21}之后,MyMvc.Controllers项目又回到了“类库”的状态:
于是猜测{fae04ec0-301f-11d3-bf4b-00c04f79efbc}对应了Web Application的项目类型,而{603c0e0b-db56-11dc-be95-000d561079b0}对应了MVC RC的模板。
注意:
{603c0e0b-db56-11dc-be95-000d561079b0}
对应了MVC RC(v1.0)的项目代码,
如果您使用的是
MVC 2.0
(包括Preview版本在内),对应的编码为
:{F85E285D-A4E0-4152-9332-AB1D724D3325}
!
如果您使用的是
MVC 3.0
(包括Beta和RC版本在内),对应的编码为
:{E53F8FEA-EAE0-44A6-8774-FFD645390401}
!
通过以上这些操作,分离了M-V-C结构,并且在Controllers中
“完整”
保留了MVC RC的脚手架的功能。
上面的
“完整”
之所以要突出一下,是因为这种保留实在是太“完整”了,以至于在Controller中自动添加View页面会添加到Controller项目中,而不是我们所希望的MyMvc.View项目中(查看对应View页面也存在相同的问题)。这倒是个大问题,如果这个问题不解决,那么“脚手架”反而成了“绊脚石”,这个问题如何解决呢?
请看下一篇《
为
ASP.NET MVC RC分离C-V项目后添加“脚手架”功能(二)》
(本文的实例也在《ASP.NET MVC RC分离C-V项目后添加“脚手架”功能(二)》中提供下载。)
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
ASP
NET
MVC
RC
分离
相关帖子
Aspire 13:从.NET 编排工具到真正的多语言云原生应用平台
.Net通过EFCore和仓储模式实现统一数据权限管控并且相关权限配置动态生成
使用DNGuard加密并打包C# .NET Core程序为单一EXE文件
强壳保护NET代码!Dnguard 4.9.4最新企业旗舰版下载地址
精选 8 个 .NET 开发实用的类库,效率提升利器!
精选 8 个 .NET 开发实用的类库,效率提升利器!
精选 8 个 .NET 开发实用的类库,效率提升利器!
精选 8 个 .NET 开发实用的类库,效率提升利器!
精选 8 个 .NET 开发实用的类库,效率提升利器!
用 .NET MAUI 10 + VS Copilot 从 0 开发一个签到 App(一)
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
Aspire 13:从.NET 编排工具到真正的多语言云原生应用平台
0
65
劳欣笑
2025-12-17
业界
.Net通过EFCore和仓储模式实现统一数据权限管控并且相关权限配置动态生成
1
956
欤夤
2025-12-18
安全
使用DNGuard加密并打包C# .NET Core程序为单一EXE文件
2
749
嫁吱裨
2025-12-19
业界
强壳保护NET代码!Dnguard 4.9.4最新企业旗舰版下载地址
1
772
庞悦
2025-12-19
业界
精选 8 个 .NET 开发实用的类库,效率提升利器!
2
900
箝德孜
2025-12-20
业界
精选 8 个 .NET 开发实用的类库,效率提升利器!
0
117
迁岂罚
2025-12-20
业界
精选 8 个 .NET 开发实用的类库,效率提升利器!
1
606
裸历
2025-12-20
业界
精选 8 个 .NET 开发实用的类库,效率提升利器!
0
175
郗新语
2025-12-20
业界
精选 8 个 .NET 开发实用的类库,效率提升利器!
1
126
宛蛲
2025-12-20
安全
用 .NET MAUI 10 + VS Copilot 从 0 开发一个签到 App(一)
0
444
遗憩
2025-12-22
回复
(1)
诸婉丽
2025-10-19 13:31:38
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
不错,里面软件多更新就更好了
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
溥价
2025-10-19 13:31:38
关注
0
粉丝关注
21
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994892
kk14977
6845358
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9981
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9949
查看更多
今日好文热榜
630
Spring+MyBatis环境下SqlSession管理机制详
928
Lit 架构解析:从 Web Components 到 lit-h
316
AI生成UI界面工具测评:8款主流设计工具的
31
JAVA 使用国密 SM4 加解密
151
Minio开始收费了?别慌,这5种免费的分布式
26
vue 甘特图 vxe-gantt 手动增加一条依赖线
640
荣耀再续 | 蚁景科技卫冕第138届广交会测试
103
荣耀再续 | 蚁景科技卫冕第138届广交会测试
933
上周热点回顾(12.15-12.21)
831
国产化Word处理组件Spire.DOC教程:通过Pyt
475
架构师必备:后端程序员需要了解的数仓知识
325
【GitHub每日速递 20251222】Paru:功能爆
961
企业级多智能体系统(MAS)架构深度研究:C
197
北京守嘉陪诊登顶2025年度陪诊行业排行 专
235
流量暴跌 96%:AI 聊天机器人正在构建危险
176
AI生成论文查重能过么?8款AI写论文软件测
511
懒人长期理财的投资系统
508
第40次CCFCSP认证邮寄
868
第40次CCFCSP认证邮寄
854
第40次CCFCSP认证邮寄