ASP.NET MVC,怎样分离代码、UI? 用MVC才几天, 喜欢它没有了VIEWSTATE, 但是, 它一个现成的控件都没有,什么都要自己写, 做个分页控件,要么在页面上嵌代码, 要么在.cs文件中写代码, 都是代码操作, 连CSS设置都要AddCssClass, 这样的话, 程序员和美工的工作能很好的分开吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 WebForm的翻页, 实际就是模拟了一次页面的访问, 然后再根据页面设置的DateSet来取第二页数据而DateSet又必须取得所有数据后才能翻页, 效率可以说是低得不行.最后想做好一些的翻页, 用SQL字符来取得页数, 当前页数据, 还是得自己写控件或重新写ASP文件代码.所以别怀恋WebForm里翻页了, 那根本就是垃圾. http://topic.csdn.net/u/20100614/16/74e6f38d-7b7a-4679-a9df-9ebb5c662230.html asp.net mvc都出到3了,还是没有像样的控件。也许这是微软的一种策略。控件全交给jquery和多如牛毛的plug-in了。我一见plug-in就烦 可以分开啊。美工做好 前台的样式。程序员只要不改CSS样式就好了现在这个项目就是这么做的。 MVC 有 最开始的 新建的 DEMO的 你要分开的话 就不用MVC开发了 你想喝牛奶 挤猪奶有用么 ASP.NET MVC, 服务器控件, 不被推荐吧, 难道你在MVC的页面中大范围地使用webform控件? MVC自己好象已经就隔离了. webform基本就没有用过它的控件,现在mvc不用控件感觉更干净了。 如果你去追溯java中的struct历史,就能理解了。微软财大气大,可以在自己的silverlight已经成熟、html5的理解已经不落后之时,为了商业利益、为了搞乱java和php而选择放弃搞了10年的asp.net编程理念。 struct --> struts打字打错了, 什么意思 MVC 不好吗? 没什么意思,他就是专业MVC黑,凡是和MVC有关的都要来酸微软一下 struts为什么从几年前ajax出现开始就被逐渐淘汰,也可以了解一下。 戴个MVC的帽子就是MVC了?很遗憾,ASP.net(MVC)的思想还停留在传统的"非此即彼"过时思想,也难怪连WPF和SL也高不成低不就如果要从头开发控件库,那我干脆html+js了,基于RIA的思想,我可以更完美的支持MVC即使用webform,我也可以自动的根据model渲染、交互所有视图,页面仅仅是个容器,不需要任何代码, 它最被java程序员诟病的地方,主要在于那种号称action或者controler可以不用考虑界面设计的思路,其实往往无法兑现。好的web应用都要从界面出发进行设计,结果大家其实都在action层写界面相关的代码,而并不是什么真正的mvc分层。 微软的长处是什么呢?是ide开发,是对所见即所得的交互界面应用程序的理解。这是早期java web程序员得不到的。不过微软要接收java程序员投靠微软,就用asp.net来搞了。 不用MVC。。搞WEB。还是天天就拖控件?我是新手。。 我没有说mvc“不好”。mvc是40、50年前刚刚有图形界面时提出的有效但是最简单的编程概念,无所谓“不好”。 struts 2 还是很多人啊。。入门简单啊比Spring 和Hibernate 呵呵!杨老师说的对!其实mvc比asp.net好用多了!好维护,又自由!写代码那是小事!维护才是大事呢! 我就看很多人说:如果你搞.net 一两 年 还是在拖控件就表示 你混大太差了什么意思?不用控件? 其实每种技术都有他们的优缺点,没有必要争论哪种好,有十全十美的语言,大家没有必要再学习新的其他语言了嘛比如几个简单的页面展示,直接HTML就OK,难道动态语言比它更好?底层的东西,一般C|C++,商业化的东西追求生成效率就高级语言,很多选择WEBFORM有很多控件,操作很方便,不过感觉和美工不是很好搭配,生成的东西比较多MVC的VIEW层就是HTML,这样和美工不是很好搭配吗?生成的东西简洁 真正的MVC不需要程序员考虑控件的事情,不是像微软这样挂羊头卖狗肉,看似没有控件,到头来都要手写代码;程序员根本不需要接触UI,每一种平台的UI设计专门的ViewDrive,controller送出View的镜像,可以挂接任何平台的UI,不同的ViewDrive各司其主,而不用修改任何代码看看微软的东西,你可以把那个前台换成别的吗?更搞笑的是,按照微软的示范代码,就连增加个字段,都要修改UI asp.net mvc的项目做得不多,理解不深。能感觉得到的好处有1.没有了viewstate,有利于提高性能。2.客户端数据绑定3.RESTful风格4.层次更清晰,客户端基本交给javascript,controller主要管数据交互至于楼主的问题,我想,客户端主要依靠javascript来实现(标准的做法是通过jquery及其插件),controller只提供数据(推荐为json格式,方便javascript解析),而尽量不要用嵌入cs代码的方式来实现,那样的话就和asp没多大区别了。 缪大侠说,真正的MVC不需要程序员考虑控件的事情,P哥说,好的web应用都要从界面出发进行设计。两位的看法可能不矛盾,但是我反应比较慢,没有理解。能否举例? 代码不能给你看了,我只用电脑举例:电脑主机开机状态,你可以随时拔下CRT显示器,换成LCD显示器,一台主机也可以同时接多台显示器只要他们的分辨率协议是兼容的,就可以立即显示,甚至即使不接显示器,有人也可以只用键盘进行一些简单的操作,你可以盲打word,开机关机这说明:1.无论是否驳接显示器,视图已经存在,2.输出设备呈现的只不过是真正视图的同步镜像,这些影像都是通过专门的驱动组件驱动的,那些能盲打的高手正是能利用大脑在脑海里呈现和同步部分影像 楼上大侠能否提供一个符合您说的那种MVC架构的实例(产品名字即可)? 这不矛盾啊,你设计一种界面模型可以用在多种UI平台,也可用在拥有相同外观和交互方式的其他业务,比如,你会说,这里放个表格,但是你不需要非得指定是web控件还是windows控件你想一想所有你见过的软件,那些窗口数都数不清,但是分门别类后数量就少得可怜了 谢谢缪大侠指教。你看是不是这样,controller 应当尽量的“薄”,它要做的是调用 model 里的方法,关注的是“做什么”。业务逻辑则应当放在 model 里,关注的是“怎么做”。model 的含义并非仅仅是“视图上显示的数据”,而是包含了业务逻辑。当你从 asp.net mvc 换到 winform 时,包含业务逻辑的model层是可以重用的。如果生意做的好,将来还可以很容易的使用 webservice 包装 model。但是如果说只要如此, UI 上就没什么可做的,恐怕还是做不到:1, UI 需要创建(当然)。针对不同的操作,需要不同的 UI,尽可能的提高用户体验。2, UI 数据和 model 数据需要转换,而且还是双向的转换。3, UI 数据需要验证,model 层里当然要有验证逻辑,但是出于用户体验的原因,仍然需要启用UI层的验证。所谓UI开发,基本上就是这3条。对于 2 和 3,在 asp.net mvc 中,通过使用 ModelBinder 和 DataAnotation(后者不是 asp.net mvc 专有的),这两个任务相对简单。我疑惑的是,如果切换到winform,难道真有什么办法可以做到不用修改任何代码就可以完成这些UI上的繁琐任务? 估计你纠结的是 控制器 如果这个理解了 什么都明白了,其实他就是 MFC 里的消息机制 在WEB 程序下它负责接收、截取并处理用户请求;并将请求委托给分发者类,根据当前状态和业务操作的结果决定向客户呈现的视图。 楼主已经说得很好了,1.不要太在意那些名字(model,control等)和样子,能满足你38楼表述的设计就是MVC的,不一定非要在套上那些名词,而骨子里一团乱麻;2.至于你38楼提出的疑问,做一次隔离就能实现,这我前面已经提到过了, 其实无论winform还是webform本身就是mvc的,你要是尝试过用C++去构造UI,就能明白这一点, 程序员不用亲自绘制UI了,用拖拽或者简单的代码方式就可以轻松地设计出UI的模型, 然后,微软帮你绘制出真正的UI 你可以平台无关的控件模型和表单模型,然后配合winformViewDrive,WebFormViewDrive,AjaxViewDrive或者WPFViewDrive转换成相对应的UI 还是比较费解。如果你看看wpf,会发现他针对UI编程提出了一整套的概念和技术,庞大复杂。很难想象这个隔离层怎么实现。winformViewDrive 能够智能到自动为按钮实现 Click 事件处理程序并处理各种错误输入? 1.我更正一下42楼:"楼主已经说得很好了"应该是:phil99已经说得很好了;2.隔离层不是要包办一切,只是把平台无关的统一模型解释成各自平台的模型,3.针对44楼的疑惑:(winformViewDrive 能够智能到自动为按钮实现 Click 事件处理程序并处理各种错误输入?) 统一模型描述了要验证什么,但是他不知道有谁实现,如何实现, winformViewDrive知道谁能实现,但是也不知道如何实现, winform类库负责具体实现,但是他不知道验证的是些什么 看看这几行代码: if(MyHelper.ToString(pParam.ValidateMethod) != "") { _txt.AutoPostBack = true; _txt.TextChanged += new EventHandler(_thisPage.txtInput_Changed); _divField.Controls.Add(_txt); pParam.ValidateMethod就是统一描述,他约定了这个参数必须要验证 _txt.TextChanged += 就是webFormViewDrive约定谁去实现, txtInput_Changed负责具体实现,但是他不知道要验证的是什么,具体的信息运行时参数传入 不懂你的表达,反正我们的aspx文件只是个容器,没有任何代码,所以,无论怎么修改界面,都不需要修改代码,只是对统一模型做一个新的表述,设计人员最多修改或重新提交一个文档就可以了,不需要写任何代码,软件生产不是生成代码,而是减少90%的代码,我学业一些工业设计和工业生产的知识,然后从微软那里学习如何把成熟的生产理论应用到软件生产的实践中 可能是各说各的了,虽然使用同一个词,但是这个词在我们脑子里具体指的东西不是一样的今天被joomla搞疯了 两个人,一整天,全浪费到 joomla 上了 asp.net网页背景声音,后台控制声音的播放 求一段关闭/退出网站的session失效代码 请问怎么把这个函数改得更方便一些? 急求生成图片的验证码 生成和校验验证码的方法 asp.net中在datagrid里直接对记录修改,删除。望高手指点。 首页遇到两个奇怪的问题:1、javascript代码一定要放在页面中,不能指定文件,否则没有效果。二、<td>与</td>之间不能有空格或换行,否则 请教高手 问一个很菜的问题,大家都怎样做界面,记事本?工具软件? 图片上加的文字不能显示特殊字体 超过了最大请求长度 自定义控件资源文件引用的问题
然后再根据页面设置的DateSet来取第二页数据而DateSet又必须取得所有数据后才能翻页, 效率可以说是低得不行.
最后想做好一些的翻页, 用SQL字符来取得页数, 当前页数据, 还是得自己写控件或重新写ASP文件代码.
所以别怀恋WebForm里翻页了, 那根本就是垃圾.
我一见plug-in就烦
美工做好 前台的样式。
程序员只要不改CSS样式就好了现在这个项目就是这么做的。
ASP.NET MVC, 服务器控件, 不被推荐吧, 难道你在MVC的页面中大范围地使用webform控件?
如果你去追溯java中的struct历史,就能理解了。微软财大气大,可以在自己的silverlight已经成熟、html5的理解已经不落后之时,为了商业利益、为了搞乱java和php而选择放弃搞了10年的asp.net编程理念。
也难怪连WPF和SL也高不成低不就
如果要从头开发控件库,那我干脆html+js了,基于RIA的思想,我可以更完美的支持MVC即使用webform,我也可以自动的根据model渲染、交互所有视图,页面仅仅是个容器,不需要任何代码,
不用MVC。。搞WEB。还是天天就拖控件?我是新手。。
WEBFORM有很多控件,操作很方便,不过感觉和美工不是很好搭配,生成的东西比较多
MVC的VIEW层就是HTML,这样和美工不是很好搭配吗?生成的东西简洁
真正的MVC不需要程序员考虑控件的事情,
不是像微软这样挂羊头卖狗肉,看似没有控件,到头来都要手写代码;程序员根本不需要接触UI,每一种平台的UI设计专门的ViewDrive,
controller送出View的镜像,可以挂接任何平台的UI,不同的ViewDrive各司其主,
而不用修改任何代码看看微软的东西,你可以把那个前台换成别的吗?
更搞笑的是,按照微软的示范代码,就连增加个字段,都要修改UI
能感觉得到的好处有
1.没有了viewstate,有利于提高性能。
2.客户端数据绑定
3.RESTful风格
4.层次更清晰,客户端基本交给javascript,controller主要管数据交互至于楼主的问题,我想,客户端主要依靠javascript来实现(标准的做法是通过jquery及其插件),controller只提供数据(推荐为json格式,方便javascript解析),而尽量不要用嵌入cs代码的方式来实现,那样的话就和asp没多大区别了。
电脑主机开机状态,你可以随时拔下CRT显示器,换成LCD显示器,一台主机也可以同时接多台显示器
只要他们的分辨率协议是兼容的,就可以立即显示,
甚至即使不接显示器,有人也可以只用键盘进行一些简单的操作,你可以盲打word,开机关机
这说明:
1.无论是否驳接显示器,视图已经存在,
2.输出设备呈现的只不过是真正视图的同步镜像,这些影像都是通过专门的驱动组件驱动的,那些能盲打的高手正是能利用大脑在脑海里呈现和同步部分影像
比如,你会说,这里放个表格,但是你不需要非得指定是web控件还是windows控件
你想一想所有你见过的软件,那些窗口数都数不清,但是分门别类后数量就少得可怜了
2, UI 数据和 model 数据需要转换,而且还是双向的转换。
3, UI 数据需要验证,model 层里当然要有验证逻辑,但是出于用户体验的原因,仍然需要启用UI层的验证。所谓UI开发,基本上就是这3条。对于 2 和 3,在 asp.net mvc 中,通过使用 ModelBinder 和 DataAnotation(后者不是 asp.net mvc 专有的),这两个任务相对简单。我疑惑的是,如果切换到winform,难道真有什么办法可以做到不用修改任何代码就可以完成这些UI上的繁琐任务?
1.不要太在意那些名字(model,control等)和样子,能满足你38楼表述的设计就是MVC的,不一定非要在套上那些名词,而骨子里一团乱麻;
2.至于你38楼提出的疑问,做一次隔离就能实现,这我前面已经提到过了,
其实无论winform还是webform本身就是mvc的,你要是尝试过用C++去构造UI,就能明白这一点,
程序员不用亲自绘制UI了,用拖拽或者简单的代码方式就可以轻松地设计出UI的模型,
然后,微软帮你绘制出真正的UI
你可以平台无关的控件模型和表单模型,然后配合winformViewDrive,WebFormViewDrive,AjaxViewDrive或者WPFViewDrive转换成相对应的UI
还是比较费解。如果你看看wpf,会发现他针对UI编程提出了一整套的概念和技术,庞大复杂。很难想象这个隔离层怎么实现。winformViewDrive 能够智能到自动为按钮实现 Click 事件处理程序并处理各种错误输入?
2.隔离层不是要包办一切,只是把平台无关的统一模型解释成各自平台的模型,
3.针对44楼的疑惑:(winformViewDrive 能够智能到自动为按钮实现 Click 事件处理程序并处理各种错误输入?)
统一模型描述了要验证什么,但是他不知道有谁实现,如何实现,
winformViewDrive知道谁能实现,但是也不知道如何实现,
winform类库负责具体实现,但是他不知道验证的是些什么
看看这几行代码:
if(MyHelper.ToString(pParam.ValidateMethod) != "") {
_txt.AutoPostBack = true;
_txt.TextChanged += new EventHandler(_thisPage.txtInput_Changed);
_divField.Controls.Add(_txt);
pParam.ValidateMethod就是统一描述,他约定了这个参数必须要验证
_txt.TextChanged += 就是webFormViewDrive约定谁去实现,
txtInput_Changed负责具体实现,但是他不知道要验证的是什么,具体的信息运行时参数传入
不懂你的表达,反正我们的aspx文件只是个容器,没有任何代码,所以,无论怎么修改界面,都不需要修改代码,
只是对统一模型做一个新的表述,设计人员最多修改或重新提交一个文档就可以了,不需要写任何代码,
软件生产不是生成代码,而是减少90%的代码,我学业一些工业设计和工业生产的知识,
然后从微软那里学习如何把成熟的生产理论应用到软件生产的实践中