一步步学习ASP.NET MVC3 (11)——@Ajax,JavaScriptResult(2)
请注明转载地址:http://www.cnblogs.com/arhat
今天在补一章吧,由于明天的事可能比较多,老魏可能顾不上了,所以今天就再加把劲在写一章吧。否则对不起大家了,大家看的比较快,可是我写的速度却跟不上了,哈哈。大家耐心一点吧,等把这几张有关ActionResult的章节写完,老魏马上要开始写路由方面的知识了,同时老魏打算用一到两章的内容来总结一下我们前面所写的内容。
在上一章中,我们讲了@Ajax辅助方法,但是只是讲了ActionLink的使用,那么本章将讲解@Ajax辅助方法的@Ajax.BeginForm()用来提交表单。同时本章在开始的时候,我们先把ActionLink的传参使用讲解一下。
现在我们需要使用ActionLink想服务器传递一个或多个参数,服务器接收参数后再加以改变输出到客户端。
我们在HomeController中写一个Action方法作为Ajax请求的方法。
public ActionResult ServerMethod(int id,string name)
{ string result = "客户端传递过来的id:" + id + ",名字:" + name; return Content(result); }
同时改写一下Index.cshtml页面
@{ ViewBag.Title = "Ajax辅助方法"; } @section script{ function Display(data){ alert(data); } } @Ajax.ActionLink("Ajax辅助方法", "ServerMethod", new { Id = 34, Name = "大话济公" }, new AjaxOptions() { OnSuccess="Display"});
通过第三个参数routeValues,我们匿名对象传递两个参数。同时把服务器返回的内容通过Dispaly函数来显示出来。
这个就是如何参数的使用方法,希望大家能够明白。下面我们主要来讲解一下@Ajax.BeginForm()函数,让表单异步提交。首先,我们来看一个例子,服务器函数还是使用上面的函数。
我们来改写一下Index.cshtml的内容
@{ ViewBag.Title = "Ajax辅助方法"; } @section script{ function Display(data){ alert(data); } } @using (Ajax.BeginForm("ServerMethod",new AjaxOptions(){OnSuccess="Display"})) { @:Id:@(Html.TextBox("id")) <br /> @:姓名:@(Html.TextBox("name")) <br /> <input type="submit" value="提交" /> }
预览效果如下:
@Ajax.BeginForm的使用方法和@Ajax.ActionLink的使用方法一样,主要是对AjaxOptions属性的更改上而已。
但是现在我们的需求改变了,上面只是通过Dispaly函数来显示,那么我们能不能通过服务器端直接输出js呢?答案是肯定的,这个时候我们就需要JavaScriptResult了。在前面我们说过,JavaScriptResult输出的内容并不能直接执行,@Ajax的辅助方法才能执行。那么现在我们使用JavaScriptResult来指定要执行的JS。
下面我们更改一下ServerMethod方法
public ActionResult ServerMethod(int id,string name)
{ string result = "客户端传递过来的id:" + id + ",名字:" + name; return JavaScript(@"$(""#result"").html("""+result+@""");"); }
同时更改一下Index.cshtml
@{ ViewBag.Title = "Ajax辅助方法"; } @section script{ function Display(data){ alert(data); } } @using (Ajax.BeginForm("ServerMethod",null)) { @:Id:@(Html.TextBox("id")) <br /> @:姓名:@(Html.TextBox("name")) <br /> <input type="submit" value="提交" /> } <div id="result"> </div>
预览结果如何呢?我们来看看
通过JavaScriptResult,那么返回的JS语句会被执行。但是这样做法是老魏不推荐的,因为这样写的话,ASP.NET MVC的特点“关注点分离”会变的非常不好,本身Action所做的就是数据处理,不能够在插手管理View吧。所以,这是老魏所部推荐的。
好了,这一章就把@Ajax和JavaScriptResult介绍完了。希望大家能够好好的练习一下。
一步步学习ASP.NET MVC3 (11)——@Ajax,JavaScriptResult(2)的更多相关文章
- 一步步学习ASP.NET MVC3 (10)——@Ajax,JavaScriptResult(1)
请注明转载地址:http://www.cnblogs.com/arhat 首先老魏先说一下抱歉,昨天由于在安装CentOS,Mono,Jexus配置Linux环境下的ASP.NET运行环境,花费了不少 ...
- 一步步学习ASP.NET MVC3 章节总结
请注明转载地址:http://www.cnblogs.com/arhat 对于<一步步学习ASP.NET MVC3>系列工15章,那么为了方便大家能够快速的预览,老魏在这里为这个系列提供一 ...
- 一步步学习ASP.NET MVC3 (1)——基础知识
请注明转载地址:http://www.cnblogs.com/arhat 首先在这里我想声明一下,这个ASP.NET MVC3系列是我在授课过程中的一些经验,有什么不对的地方,请大家指出,我们共同的学 ...
- 一步步学习ASP.NET MVC3 (3)——Razor(1)
请注明转载地址:http://www.cnblogs.com/arhat 首先这个<一步步学习ASP.NET MVC3>前段时间有些忙,没有顾得上写文章,昨天呢写了3个和ASP.NET的相 ...
- 一步步学习ASP.NET MVC3 (12)——FileResult
请注明转载地址:http://www.cnblogs.com/arhat 忙了两天,本来老魏昨天就应该写出新的文章,但是由于昨天雨夹雪而且加上昨天晚上加了班,到家都没饭吃了,一看时间都9点了,什么饭店 ...
- 一步步学习ASP.NET MVC3 (2)——入门程序
请注明转载地址:http://www.cnblogs.com/arhat 在上一节中,我们只是简单的介绍了什么是MVC及MVC的运行原理.而本节呢,主要来实现下一ASP.NET MVC3的开发流程,并 ...
- 一步步学习ASP.NET MVC3 (14)——Route路由
请注明转载地址:http://www.cnblogs.com/arhat 由于今天是星期六,所以多写几篇,感觉前几天的忙碌没有及时发布文章,趁着周末老魏尽力的多写几篇文章.因为本系列基本上快结束了,所 ...
- 一步步学习ASP.NET MVC3 (5)——View从Action中获得数据
请注明转载地址:http://www.cnblogs.com/arhat 在上一章中,我们把Razor的模板技术给大家介绍了一下,当然模板中还有其他的知识点,这个以后我们还会继续讲解.本章我们主要讨论 ...
- 一步步学习ASP.NET MVC3 (9)——JsonReslt,JavaScript,@Ajax
请注明转载地址:http://www.cnblogs.com/arhat 在上一章中,我们讲述了ActionResult的三个子类,非别是EmptyResult,RediretResult和Conte ...
随机推荐
- 电商ERP常见功能模块
电商ERP是适用企业卖家的专业电子商务ERP,支持淘宝.天猫.京东.1688.当当.苏宁.拍拍.唯品会.亚马逊.独立B2C等多网络销售渠道:也包括 异地多仓..货位管理.智能配货等专业的WMS(仓 ...
- 例3-12opencv设置ROI感兴趣区域
前面说了一堆,也不知道啥用,感觉也没说清楚,可能确实需要一些例子来显性表示一下,或者他们在当初出版书籍针对的人群已经有了对图像的基本认识,然而自己还是没有建立起来,往后看看吧,希望能比较清楚的自己处理 ...
- WebSocket原理及与http1.0/1.1 long poll和 ajax轮询的区别【转自知乎】
一.WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)首先HTTP有1.1和1.0之说,也就是所谓的ke ...
- 关于Eclipse插件开发-----加入首选项(preferencePages)
选择主菜单"窗口---->首选项"命令打开"首选项"窗口.此窗口是Eclipse设置项的集中营, 修改plugin.xml文件,设置首选项的扩展点: pl ...
- Android Studio依赖dependencies和Eclipse加上lib包解决重复编译某些项目的问题
android运行时编译,可以在android的dependencies里面加语句, 一般是compile 'com.android.support:appcompat-v7:22.2.1' comp ...
- ### 学习《C++ Primer》- 7
Part 7: 重载运算与类型转换(第14章) // @author: gr // @date: 2015-01-08 // @email: forgerui@gmail.com 一.重载运算符要求 ...
- iOS开发——百度云推送
由于公司项目是集成的极光推送,详见下一篇博客. 集成百度推送大体相当,最好都参考官方文档集成,官方文档或官方网站教程是最好的博客. 百度Push服务SDK用户手册(iOS版) http://push. ...
- iOS调试程序时,启动应用失败的解决办法
最近在iOS项目中调试程序,项目中用到第三方应用来启动我的应用程序,调试阶段在实体机上用第三方应用启动我的应用时,出现如下错误,程序停止运行: 同时,在AppDelegate对象的如下方法中设置断点: ...
- JavaScript学习笔记(5)——JavaScript语法之数据类型
JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型: var x // x 为 undefined var x = 6; // x 为数字 var x = "Bill&q ...
- (转)Quartz.NET管理类
最近做项目设计到Quartz.NET,写了一个Quartz.NET管理类,在此记录下. public class QuartzManager<T> where T : class,IJob ...