ASPNET Web Form下的AJAX
在传统的AspNet下如果不使用AspNet Ajax或者如AjaxNet此类第三方的框架就需要一个空白的页面并且在此页面的Page_Load方法中完成所有的服务器端的操作通过Response将数据传回客户端提交给JavaScript来处理各人认为这种方法的一个不好的地方就是一个页面只能完成一项功能即使这个功能再简单
ASPNET MVC下的AJAX
在AspNet MVC中每一个Request都被route到一个Controller下的Action来处理即一个Controller Class的一个方法因此如果在Action方法中完成业务逻辑并把需要回传的数据写回到Response中在客户端再由JavaScript来处理这些回传的数据相信也能实现AJAX基于这个想法做了一个小小的Demo实现了 mvc下的ajax
为了方便起见客户端JavaScript的功能就通过jQuery来实现了
页面文件
Html Code
其中的$(document)ready(…)是jQuery下的JavaScript实现有兴趣的朋友可以看看jQuery官网和中文社区
在来看一下Controller中的对应的Action方法 public void SearchUserAjax()
{
string uerid = Request[name];
List<UserLunchList> lunchs = (
from userlunch in repositoryUserLunchListsToList()
where userlunchUserID == intParse(uerid)
select userlunch
)ToList();
StringBuilder sb = new StringBuilder();
sbAppend(<table id=LunchList style=display:none><tr><th>User</th><th>Time</th><th>Price</th></tr>);
foreach (UserLunchList lunch in lunchs)
{
sbAppend(<tr><td> + lunchUserUserName + </td><td> + lunchTimeToShortDateString() + </td><td> + lunchCost + </td></tr>);
}
sbAppend(</table>);
ResponseContentType = text/html;
ResponseWrite(sbToString());
}
说穿了很简单就是把想要的数据直接写到Response中就可以了这里为了方便起见就是写好了Table的格式有一个地方需要注意的就是这个语句
ResponseContentType = text/html 很重要它告知JavaScript以何种格式来处理Response中的数据
核心内容就这么简单呵呵
如果觉得写JavaScript代码烦的话可以使用extension方法自定一个HtmlForm或者其它的控件