2010-06-09 69 views
1

我目前正在开发一个利用ASP.NET MVC2的新网站。我想对网站做的很多事情(从前端角度来看)涉及到AJAX-y类型的任务。ASP.NET MVC2和AJAX

两个例子:

  1. 我想显示的形式,并通过一个下拉菜单(或通过链接),而不必回去打每一次的服务器之间进行切换。
  2. 我希望用户能够选择图表控件上的点,并根据他/她选择的部分(局部页面刷新)使用适当的数据刷新页面的某些部分。

在这两种情况下,我都能够使用传统的Web窗体事件处理程序等完成我希望完成的任务。不幸的是,使用ScriptManager违反了MVC的精神。看起来,MVC似乎阻止了许多ASP.NET可用的控件的使用。

所以,我的问题是:如何在不利用ScriptManager和使用事件处理程序的Web窗体方法的情况下使用AJAX并进行AJAX调用?

+0

当您使用ScriptManager和WebForms事件处理程序完成这些部分渲染任务时,您*会返回并每次触碰服务器。这些部分更新实际上比整个页面刷新多*服务器密集型,无论实际重新渲染区域有多小。 – 2010-06-09 18:22:06

回答

2

这不是ScriptManager“违反了MVC的精神”,它只是MVC框架的构建方式不同而已。

Web控件依赖ASP.Net webforms构造,如ViewState和Postbacks。这些在ASP.Net MVC中不存在,所以依赖它们的任何控件都将无法正常工作。但是,控件仍然会呈现其HTML并运行其事件处理程序,因为每个.aspx页面在由默认视图引擎编译时仍会遍历页面生命周期。 (如果你使用自定义的视图引擎来渲染你的html,它们根本无法工作!)

无论如何,大多数人依靠微软的ajax脚本(MicrosoftAjax.js,MicrosoftMvcAjax.js)或者使用第三方第三方库,如jQuery做他们的ajax的东西。如果你刚开始,我会建议前往main ASP.Net MVC site并查看他们的一些教程。 NerdDinner电子书是MVC的好开始,there is a chapter on using Microsoft's Ajax to do dynamic updates