一步步学习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 ...
随机推荐
- linux剪切拷贝
1.剪切 mv rename.sh ../rename.sh 把这个文件移到上一级目录下 mv rename.sh ./pic/rename.sh 把这个文件移到 当前目录下的pic目录下,并改名 ...
- iOS之用xib给控件设置圆角、边框效果
xib中为各种控件设置圆角 通过代码的方式设置 @interface ViewController () @property (weak, nonatomic) IBOutlet UIView *my ...
- multiple build commands for output file
在项目中 我们经常会碰到图片这方面的警告 虽然不影响运行 但是警告太多了也不是很好 其中 图片方面遇到的警告以下面的警告偏多:multiple build commands for output ...
- santoku学习笔记
帮助文档:https://santoku-linux.com/faqs The first time you log in your username and password are “Santok ...
- nodeValue和innerHTML的比较
<ul id="parent"> <li>1</li> <li>2</li> <li>3</li> ...
- volley+NetworkImageView实现列表界面的列表项中的左侧图标展现之【实现已经加载的列表项的图标上翻的时候不重新加载】
参考资料:http://blog.csdn.net/guolin_blog/article/details/17482165 我使用的列表的适配器是继承ArrayAdapter的,所以关于使用voll ...
- [CSS][转载]内层div的margin-top影响外层div
参考 内层div的margin-top影响外层div——引出外边距合并 div嵌套导致子区域margin-top失效不起作用的解决方法 我使用的是在外层的div中添加 border: 1px soli ...
- ajax 跨域的几种方式
网络上跨域的文章大多一样,这里我写下,巩固下自己的知识,顺便做个记录 什么是跨域 这里简单拿百度的网址做个例子:http://www.baidu.com:80 (默认都是80端口.可省略) http ...
- JAXB - Annotations, Annotations for the Schema: XmlSchema
This annotation can only be used with a package. It defines parameters that are derived from the xsd ...
- vs2010打开vs2012的sln文件
1.找到**.sln文件,然后选择用记事本打开. 2.最前面找到“Microsoft Visual Studio Solution File, Format Version 12.00 # Visu ...