新足迹

 找回密码
 注册

精华好帖回顾

· 我的愤青年代 (2007-9-10) dickson · 新疆大盘鸡 (2004-12-15) sduwei
· 两岁儿童教育笔记 (2009-3-11) JuliaTung · 在澳洲做小生意,你需要具备什么 (2011-10-11) yuxuanlin
Advertisement
Advertisement
查看: 1090|回复: 1

asp.net mvc的一个问题 [复制链接]

头像被屏蔽

禁止发言

发表于 2011-8-26 12:55 |显示全部楼层
此文章由 linkspeed 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 linkspeed 所有!转贴必须注明作者、出处和本声明,并保持内容完整
思考路线如下:
1. 首先因为sitemaster的缘故,所以设计mastermodel来容纳各个页的相同的model元素。
2. 因为1,所以各个不同的model会是mastermodel的子类
3. 由于那些相同元素的值是共享的,所以设计一个sharedvalues类,用来保存那些相同元素,然后各个model的建构函数都需要有一个下面这种样子的
public submodel(SharedMember shobj):base(shobj){}
public mastermodel(SharedMember shobj):base(shobj){}

4.基于以上思路,postback的时候可以再加入没参数的constructor.反正postback的model需要把值都更新到已经在session里面的对应的那个instance里面。

下面是问题:
1. 现在需要加入单元测试,因为单元测试,所以需要截断关联,所以需要用IOC,一般都用constructor传进去。
现在constructor已经定死了。
怎么办?

2. 我看了那个nerd dinner,他好像是把controller和model需要用到的外部调用都归拢到一个service类里面。
外部调用比如db, web.config里面的值啊, httpcontext啊等等。然后把这个service的interface给放constructor里面。这也算一种办法。有没有更好的?
Advertisement
Advertisement
头像被屏蔽

禁止发言

发表于 2011-9-9 11:39 |显示全部楼层
此文章由 linkspeed 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 linkspeed 所有!转贴必须注明作者、出处和本声明,并保持内容完整
更新:
1. 用base class来保存共享的参数是正确的

2. 因为MVC的特殊情况: model由postback和自行创建2种方式。所以我所想的用constructor传入或者依据某个已有的model来创建新的model已保证传递在session里的sharedobject是错误的方式。

解决方案有2种
1. 在base controller的OnActionExecuted()里面对base model的参数进行赋值或者创建。
2. 在custom model binder里面完成赋值

评分

参与人数 1积分 +3 收起 理由
+ 3 感谢分享

查看全部评分

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部