AJax技术

ASP.NET MVC4 IN ACTION学习笔记-第六波[Ajax in ASP.NET MVC][2/3]

字号+ 作者:H5之家 来源:H5之家 2015-10-08 18:22 我要评论( )

ASP.NET MVC4 IN ACTION学习笔记-第六波[Ajax in ASP.NET MVC][2/3]

上篇博客地址:/link.php?url=http://www.cnblogs.com/Fresh-Air/archive/2013/05/06/3060194.html



image

, Show the privacy policy2



7


当页面加载的时候,在jquery-unobtrusive.ajax的脚本将会查找含有data-ajax属性的所有链接,找到后绑定单击事件。同样地,如果浏览器禁用了Javascript,这个link将作为一个正常的link的作用,回到了non-Ajax(无Ajax)行为。



List<string> _comments = new List<string>();
 
public ActionResult Index()
{
return View(_comments);
}
 
[HttpPost]
public ActionResult AddComment(string comment)
{
_comments.Add(comment);
 
if (Request.IsAjaxRequest())
{
ViewBag.Comment = comment;
return PartialView();
}
 
return RedirectToAction("Index");
}
 
public ActionResult PrivacyPolicy()
{
if (Request.IsAjaxRequest())
{
return PartialView();
}
 
return View();
}


然后同样的,我们复制一下CustomAjax文件夹的下的AddComment.cshtml到AjaxHelper文件夹下。


当运行这个页面的时候,原理都一样的,虽然表单被额外的 data-ajax属性修饰了,跟ActionLink很像,下面是截图:



效果图:


2


这样,关于表单的 渐进增强模式(progressive enhancement)已经完成了,以前我们完成的HTML.ActionLink变成了Ajax.ActionLink,现在是表单过渡了。表单有Html.BeginForm变成了Ajax.BeginForm,通过使用了jquery.unobtrusive-ajax 脚本,表单就会以Ajax形式提交了,但是如果客户端禁用了JavaScript,这个表单就会以普通的表单发送post请求。


7.2.3    Ajax Options


在几节里面,你看到了ActionLink和BeginForm 的Ajax helper都有AJaxOptions对象,这个对象表明了Ajax的结果怎么被处理。它定义的属性如下:


image


如果你以前有jQuery经验,这些好多都能看的懂。


除了LoadingElementDuration,所有的这些选项在以前的ASP.NET MVC2中都有。但是把这些option放到页面的标签里不一样了。你看到了,在HTML elements里,这些选项(options)都以data-*形式生成,然而在MVC2中,他们是被插入到页面里面的,以一种更unobtrusive的作法完成。


 


7.2.3    跟以前版本的ASP.NET MVC不同的地方



虽然Ajax helpers 在MVC1就已经是MVC中的一部分了,现在jQuery是默认的。在以前版本的框架,这些helpers都是使用Microsoft Ajax Library,而且没有采用unobtrusive的方式生成JavaScript。我们可以通过修改web.config节点下的AppSettings下的UnobtrusiveJavaScriptEnabled属性改为false,就可以恢复以前版本框架的行为了


image


比如,现在是true,我们把UnobtrusiveJavaScriptEnabled改为false后运行项目:


现在我们使用Ajax.ActionLink后生成的代码如下:


image


把UnobtrusiveJavaScriptEnabled设为false后,没有再采用data-ajax属性了,所有的元数据都被OnClick事件替代了,为了让程序正确运行,所以框架要求你必须引用MicrosoftAjax.js 和 MicrosoftMvcAjax.js ,跟unobtrusive风格的代码比,可读性不强,不直观,它也破坏了 Unobtrusive Javascript原则


如果你正在把你以前ASP.NET MVC版本的网站升级,你需要保留这些行为,为了提高兼容性,需要把UnobtrusiveJavaScriptEnabled设为false。但是在其他的情形下,把UnobtrusiveJavaScriptEnabled设为true是最好的,因为这样,HTML生成的时候更直观,可读性强,而且微软很看重ajax的这种Unobtrusive写法,并且在更新和研究。



 



左侧拥抱

 博主留言



为了让读者有更好的阅读体验,打算将每章的内容分开写.让每篇的阅读起来更舒服一点.


同时我每天可以写一点,同时每天都可以上传一点,而不必一次性写完每章的博客,而一次性发布


内容过多,那么每次读者学习,查看的时候,下载的也就越多了.考虑到这个,所以本篇博客写到这里..


晚安,大家!由于源码文件过大,先不发布了,等本章博客全部完成后,一次性发布。



原文链接




更多文章:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评
u