新足迹

 找回密码
 注册

精华好帖回顾

· 草莓园“竣工”--实战记!(问题解决,给垫起来了!) (2012-10-2) HALAN · 二、悉尼买车记-auction (2005-8-16) laycee
· Confederations Cup (2009-6-22) joaquin · 抖擞DIY精神,勇补车窗 (2008-1-30) zhengtao
Advertisement
Advertisement
查看: 2955|回复: 57

asp.net mvc对复杂object的model binding痛苦死了 [复制链接]

发表于 2011-2-1 13:20 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
好象template是现在唯一的一条路可以走,非常繁琐,很不喜欢,i'm missing web form now.   

http://bradwilson.typepad.com/bl ... 1-introduction.html
Advertisement
Advertisement

2010年度奖章获得者

发表于 2011-2-1 14:08 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
大哥, 这是3年前的东西了, 现在语法都有改进了。

发表于 2011-2-1 14:19 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-2-1 15:08 发表
大哥, 这是3年前的东西了, 现在语法都有改进了。


IModelBinderProvider in mvc3?
头像被屏蔽

禁止发言

发表于 2011-2-1 14:25 |显示全部楼层

貌似mvc就是个market brand

此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
目前没啥实用价值,不懂得说

发表于 2011-2-1 14:33 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 澳贼 于 2011-2-1 15:25 发表
目前没啥实用价值,不懂得说


我也在学习中,没法评价

2007 年度奖章获得者

发表于 2011-2-1 14:36 |显示全部楼层
此文章由 coolioo 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 coolioo 所有!转贴必须注明作者、出处和本声明,并保持内容完整
MVC 看了一下,太复杂。而且aspx页面里面有很多C# code,看起来很乱,和classic ASP差不多了。

还是web form简单明了,而且也可以实现MVC。
Advertisement
Advertisement

发表于 2011-2-1 14:41 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 coolioo 于 2011-2-1 15:36 发表
MVC 看了一下,太复杂。而且aspx页面里面有很多C# code,看起来很乱,和classic ASP差不多了。

还是web form简单明了,而且也可以实现MVC。


razor作view会好很多

发表于 2011-2-1 14:48 |显示全部楼层
此文章由 ahwen 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 ahwen 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我相信用过mvc的人不会再考虑用web form的。
干净紧凑的html代码以及对html代码的完全控制、清晰的逻辑分层和可测试性,web form都相形见拙。

评分

参与人数 2积分 +4 收起 理由
kanjunhai + 2 我很赞同
jerryclark + 2 我很赞同

查看全部评分

2007 年度奖章获得者

发表于 2011-2-1 14:51 |显示全部楼层
此文章由 coolioo 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 coolioo 所有!转贴必须注明作者、出处和本声明,并保持内容完整
恩,MVC看得还不是很深入。MVC理论还是比较严谨的

2007 年度奖章获得者

发表于 2011-2-1 14:54 |显示全部楼层
此文章由 coolioo 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 coolioo 所有!转贴必须注明作者、出处和本声明,并保持内容完整
web form也可以做到代码很干净,层次清晰。其实web form比MVC更自由,想怎么写都可以,所以就比较容易写出层次混乱的代码。

MVC用框架把你固定住了,你只能按照框架写代码。出来的东西自然比较规矩。
C.B

发表于 2011-2-1 14:55 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 ahwen 于 2011-2-1 15:48 发表
我相信用过mvc的人不会再考虑用web form的。
干净紧凑的html代码以及对html代码的完全控制、清晰的逻辑分层和可测试性,web form都相形见拙。


postback到server这边的model binding是最messy的一块,如果用到复杂object的collection和partial view, 再加上client side html element manipulation,再想做model binding就很不容易,不过直接从httpcontext里面取data,手工populate就是另说了。
Advertisement
Advertisement

发表于 2011-2-1 14:59 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 coolioo 于 2011-2-1 15:54 发表
web form也可以做到代码很干净,层次清晰。其实web form比MVC更自由,想怎么写都可以,所以就比较容易写出层次混乱的代码。

MVC用框架把你固定住了,你只能按照框架写代码。出来的东西自然比较规矩。


webform你不用考虑server side object state recoverage和html rendering, mvc这两块比webform差远了。

发表于 2011-2-1 15:04 |显示全部楼层
此文章由 ahwen 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 ahwen 所有!转贴必须注明作者、出处和本声明,并保持内容完整
web form生成的html代码,尤其当你用到GridView或User Control的时候,简直惨不忍睹。基于event的模型根本就是windows form那边生硬搬来的,不得不加了很多东西在viewstate里,每次都要随着页面postback,完全违反了web page request的stateless的特性。

MVC的每一层都可以写的很灵活,代码易读性、易维护、易测试。
Model Binding如果精心设计,可以很巧妙、很简单地实现,包括Array之类复杂数据,都有简单明了的实现方式。Templates更可以令ASPX或者csshtml也很DRY

发表于 2011-2-1 15:08 |显示全部楼层
此文章由 ahwen 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 ahwen 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-2-1 15:59 发表


webform你不用考虑server side object state recoverage和html rendering, mvc这两块比webform差远了。

MVC也不用考虑state recovery,model binding就自动做了。 其实根本不应该考虑,因为web page是stateless的。
作为一个Web developer,怎么可以不考虑html rendering呢?

发表于 2011-2-1 15:16 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 ahwen 于 2011-2-1 16:04 发表
web form生成的html代码,尤其当你用到GridView或User Control的时候,简直惨不忍睹。基于event的模型根本就是windows form那边生硬搬来的,不得不加了很多东西在viewstate里,每次都要随着页面postback,完全违反了web page r ...


你看看mvc生成的html,如果你想model binding回去,它的id和name跟web form一模一样的,html 整体结构可能干净点.而且mvc加很多自己的html attribute,严格意义来说,根本通不过html validator的,不过browser比较容忍它就是了。

发表于 2011-2-1 15:18 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 ahwen 于 2011-2-1 16:08 发表

MVC也不用考虑state recovery,model binding就自动做了。 其实根本不应该考虑,因为web page是stateless的。
作为一个Web developer,怎么可以不考虑html rendering呢?


我们可以关注少些,而不是像mvc那种大多数情况下要手工render的,
Advertisement
Advertisement

发表于 2011-2-1 15:21 |显示全部楼层
此文章由 ahwen 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 ahwen 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-2-1 16:16 发表


你看看mvc生成的html,如果你想model binding回去,它的id和name跟web form一模一样的,html 整体结构可能干净点.而且mvc加很多自己的html attribute,严格意义来说,根本通不过html validator的,不过browser比较容忍它就是了。


不,mvc里的html都是程序员自己写的(所以才叫有完全的控制),Model binding用的的只是name.
在mvc的页面如果你有不标准的html语法,跟mvc系统一点关系也没有,肯定你自己什么地方写错了。

2010年度奖章获得者

发表于 2011-2-1 15:22 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
连我都没看懂你在说什么。。。

心不要太浮躁, 在没吃透一个东西前最好别先扣一堆帽子。

发表于 2011-2-1 15:24 |显示全部楼层
此文章由 pengruijun 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 pengruijun 所有!转贴必须注明作者、出处和本声明,并保持内容完整
还没机会 上手用MVC 呢

发表于 2011-2-1 15:24 |显示全部楼层
此文章由 ahwen 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 ahwen 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-2-1 16:18 发表


我们可以关注少些,而不是像mvc那种大多数情况下要手工render的,


MVC的html代码完全要手工(或其他方式)完成,系统不会贡献任何东西。
如果你想要的是像windows forms那样可视化快速开发方式,不能或不想写自己的html rendering, 这时比较好的选择只好是web form了

2010年度奖章获得者

发表于 2011-2-1 15:26 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
mvc 最大的优点就是你对html output 有100% 的控制。
真不知道你在说什么。。。

binder 是服务端的,

html render 成什么样的是客户端的问题。

不要把两个混在一起说。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载
Advertisement
Advertisement

发表于 2011-2-1 15:28 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 ahwen 于 2011-2-1 16:21 发表


不,mvc里的html都是程序员自己写的(所以才叫有完全的控制),Model binding用的的只是name.
在mvc的页面如果你有不标准的html语法,跟mvc系统一点关系也没有,肯定你自己什么地方写错了。

mvc 最大的优点就是你对html output 有100% 的控制。
真不知道你在说什么。。。

binder 是服务端的,

html render 成什么样的是客户端的问题。

不要把两个混在一起说。


很确定你没用过 editorfor && displayfor

[ 本帖最后由 乱码 于 2011-2-1 16:30 编辑 ]

发表于 2011-2-1 15:31 |显示全部楼层
此文章由 ahwen 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 ahwen 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-2-1 16:28 发表
很确定你没用过 editorfor && displayfor


用了一大堆,不过都是自定义的。直接用的话,只是最简单的input列表,能符合你网页的显示要求吗?

发表于 2011-2-1 15:33 |显示全部楼层
此文章由 ahwen 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 ahwen 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-2-1 16:28 发表
很确定你没用过 editorfor && displayfor


这就是我刚才提到过的使页面变得很DRY的templates.
不知道你在开发时候怎么用的?

发表于 2011-2-1 15:34 |显示全部楼层
此文章由 cdfei 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cdfei 所有!转贴必须注明作者、出处和本声明,并保持内容完整
webform一样可以100%自己写HTML代码吧

发表于 2011-2-1 15:35 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 ahwen 于 2011-2-1 16:31 发表


用了一大堆,不过都是自定义的。直接用的话,只是最简单的input列表,能符合你网页的显示要求吗?


所以要用template 对这个class type customize,这是mvc2的solution,而且在mvc3也可以用.

你最好先看一下我1楼的link再说话
Advertisement
Advertisement

2010年度奖章获得者

发表于 2011-2-1 15:36 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 cdfei 于 2011-2-1 16:34 发表
webform一样可以100%自己写HTML代码吧


除非你不用server control, 吧viewstate 全部关掉。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

发表于 2011-2-1 15:37 |显示全部楼层
此文章由 ahwen 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 ahwen 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 cdfei 于 2011-2-1 16:34 发表
webform一样可以100%自己写HTML代码吧

webform完全不用control,100%控制html输出也是可以的,我以前做过的一个项目就用过,但是维护起来极端痛苦,并且违背了webform这个framework的设计初衷

发表于 2011-2-1 15:39 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 cdfei 于 2011-2-1 16:34 发表
webform一样可以100%自己写HTML代码吧


只要有response这个object就可以,不过倒退到classic asp年代了.

发表于 2011-2-1 15:40 |显示全部楼层

回复 28# 的帖子

此文章由 cdfei 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cdfei 所有!转贴必须注明作者、出处和本声明,并保持内容完整
是嘛,所以mvc的优点主要是结构更清楚,测试更方便,和是不是自己写HTML没啥太大关系,这个其实是它的劣势,增加了开发工作量。现在的网络和计算机处理能力都很以前完全不一样,有一点多余的代码,或者效率稍差点,在大多数情况下都不用太考虑。

发表回复

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

本版积分规则

Advertisement
Advertisement
返回顶部