|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
您现在的位置: ChinaBeta.cn 中文IT资讯 >> 网盟学院 >> 编程类 >> ASP|ASP.NET >> 网管技术正文
推荐网管技术让我穿过那道"墙"! 畅游网络应…推荐网管技术主动防御!瑞星杀毒2008抢先评…
推荐网管技术速度超快 Discuz! 6.0.0试用手…推荐网管技术奇虎举证:各杀毒软件均报CNNIC…
推荐网管技术Google Earth 4.2加入繁体中文…推荐网管技术专业防护!瑞星防火墙2008测试…
推荐网管技术挂载RAR文件 从认识到爱上WinM…推荐网管技术让你冲浪随心所欲 如何访问被封…
推荐网管技术轻装上阵!江民杀毒软件2008速…推荐网管技术VMware Fusion苹果版全程图解(…
推荐网管技术VMware Fusion苹果版全程图解(…推荐网管技术从菜鸟出发!征服高清详细评测全…
推荐网管技术VS2008和ASP.NET 3.5使用之初体…推荐网管技术[多图]Ubuntu 7.04 初体验
推荐网管技术东风吹战鼓擂 下载软件你选谁?推荐网管技术若隐若现 Windows XP DirectX …
推荐网管技术GPRS上网全攻略推荐网管技术主流杀毒软件Vista兼容性横评
推荐网管技术基于IRF的网络管理和业务管理解…推荐网管技术83个美丽的Wordpress主题
推荐网管技术软交换网络中的关键路由技术详…推荐网管技术不只是换肤?Windows Mobile 6 …
推荐网管技术css教程–十步学会用css建站(全…推荐网管技术巧妙设置路由 预防网络频繁掉线
推荐网管技术打造网络管理七大绝技推荐网管技术CorelDRAW X3 Service Pack 2 …
推荐网管技术重温经典:回归 Live Messenger…推荐网管技术Oracle数据库补丁分类、安装及…
为ASP.NET MVC框架添加AJAX支持
Www.ChinaBeta.Cn 更新时间:2008-1-2 阅读次数:

【ChinaBeta.Cn 网盟学院】
  ASP.NET MVC框架的官方CTP版本还没有包括对AJAX的支持。不过目前有几个示例展示了如何为ASP.NET MVC应用添加AJAX功能。

   Nikhil Kothari 提供了一个示例程序和示例代码,它们示范了为ASP.NET MVC框架添加类似ASP.NET AJAX这样的AJAX支持:

   AjaxaController是我添加的一个类,它引入了一个新的属性IsAjaxRequest,我能够在Action方法中用它来做一些诸如输出不同视图的事情。它同样引入了另外一些成员,例如RenderPartial方法,它能够使用定义在一个部分视图中而不是一个完整页面中的内容,来生成用户界面的一部分。下面是我提供的新Controller,以及新的Add方法。还有一些额外的改变用加粗来表示了:

public class TaskListController : AjaxController { public void Add(string name) { Task newTask = null; if (String.IsNullOrEmpty(name) == false) { newTask = _taskDB.AddTask(name); } if (IsAjaxRequest) { if (newTask != null) { RenderPartial("TaskView", newTask); } } else { [...] } } }
   除了Controller扩展之外,Nikhil还提供了一些扩展方法给视图来使用:“RenderBeginForm用于生成一个普通的Form标签,RenderBeginAjaxForm生成一个AJAX可用的Form [...],以及RendEndForm方法”。这个示例“简单示范了使用ASP.NET页面中AJAX核心功能——部分刷新,Behaviors和Extender控件——的第一步”

   Kevin Hoffmann在文章“如何为ASP.NET MVC框架提供AJAX功能”提出了他的看法。在一开始他批评Nikhil的示例仅仅示范了如何通过生成HTML来更新Web页面的一小部分。在他看来:

   Ajax,在企业应用中,不仅仅是指动态生成一小块div。诚然这的确是一个很重要的的部分,但是大部分人在使用XMLHttpRequest对象来向服务器端的Controller请求数据时,他们希望得到的仅仅是数据,而不是已经生成好的div。在很多情况下,我们需要一个控制器通过不同的Action(诸如REST/POX/Web Services类型的Action)向智能客户端提供各种形式的数据。因此,尽管我在某些场景下会喜欢RenderPartial之类的方法,但是更好的例子应该是通过生成一个视图来输出简单的XML,如果是JSON那就更好不过了。

   它对Controller中提供的IsAjaxRequest属性更加担心:

   MVC最重要的就是合理的分离关注点。在示例中只有一行代码破坏了这一点,那就是IsAjaxRequest属性。这有点像设法让MVC框架变得和旧有的PostBack世界变得接近,而且坦白地说,旧有的PostBack世界能够解决我的问题。恕我直言,Controller应该只是一个Controller,它不应该,也不能决定应该是生成AJAX还是普通的内容,生成AJAX还是普通的HTML应该由View来决定。Controller的作用应该是为生成一个视图获取正确的数据,然后选择一个试图进行内容生成。

    Kevin最后总结到,他希望微软能够提出一个令人信服的理由,来说明为什么开发人员不应该去使用一些其他的AJAX类库,使它们能够让MVC一起工作。

   作为那些回应Kevin的人,Chad Myers提供两个方法将其他的AJAX类库和ASP.NET MVC进行集成。在结合使用script.aculo.us与ASP.NET MVC框架一文中,Chad展示了如何在ASP.NET MVC视图中使用script.aculo.us客户端JavaScript + AJAX框架和它的一些控件。script.aculo.us是“一套Web 2.0风格的JavaScript类库,可以帮助Web开发人员轻易为项目添加各种可视化和AJAX的效果”。

   第二个方法展示了如何结合使用jQuery和ASP.NET MVC框架。jQuery是“一个快速的,简练的JavaScript类库,能够简化您遍历HTML文档,操作事件,实现动画以及为您的Web页面添加AJAX交互效果”。Chad将Jack Born在实现“原地修改”效果的指南一文中说明的方法移植到了ASP.NET MVC框架中,以此展示jQuery能够如何方便地与新框架进行集成。用Chad的话来说,如果您打算使用ASP.NET MVC框架时,只需要将jQuery示例中那些涉及服务器端部分里的“PHP”或“Ruby”等字样替换成“ASP.NET MVC”就可以了。
Google

(责任编辑:hahack)

发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
热门文章 相关报道
普通网管技术 [软件应用]凤凰涅槃 驱动精灵2008归来 (01-03)最新网管技术
普通网管技术 [ASP|ASP.NET]为ASP.NET MVC框架添加AJAX支持 (01-02)最新网管技术
普通网管技术 [JSP|JAVA]从Java到Ruby:献给引路人的策略 (01-02)最新网管技术
普通网管技术 [PHP]PHP多文件上传实例 (01-02)最新网管技术
普通网管技术 [其它编程程序]QQ 静态截图完善实现之改造 CRec… (01-02)最新网管技术
普通网管技术 [其它编程程序]C++运算符重载转换运算符 (01-02)最新网管技术
普通网管技术 [其它编程程序]详细解析C++编写的ATM自动取款机… (01-02)最新网管技术
普通网管技术 [其它编程程序]C++中用vectors改进内存的再分配 (01-02)最新网管技术
普通网管技术 [其它编程程序]C++中的虚函数((((virtual funct… (01-02)最新网管技术
普通网管技术 [其它编程程序]C++中用函数模板实现和优化抽象操… (01-02)最新网管技术
  • ASP.NET 2.0 AJAX中Webserv…

  • 在ASP.NET页中检测浏览器类…

  • asp.net定制简单的错误处理…

  • 常见ASP.NET高试出错信息及…

  • 一个ASP.NET菜单程序Beta 0…

  • ASP.NET菜单控件Beta 0.1的…

  • VS2008和ASP.NET 3.5使用之…

  • ASP.NET 防盗链源码

  • 101个微软提供的Visual Stu…

  • 讲故事谈.NET委托:一个C#睡…

  •   网友评论内容:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    I D *
    邮 箱
    主 页
    评 分 1分 2分 3分 4分 5分
    评 论

    关于我们  中国·国家信息产业部{粤ICP备06006652号}{陇ICP备06002562号}
    版权所有:『AK网盟基地』站长:Hahack | QQ:80505955 | E-mail:Hahack@Gmail.com
    Copyright (C) 2005-2007  akhack.org|chinabeta.cn All Rights Reserved