MVC3 学习笔记 之(ajax表单)
mvc 提供了一种ajax提交表单的方式。与普通表单不同的是,它是一个异步表单。
在开始使用之前,需要引用以下文件:
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
下面做了一个例子实现按姓名关键字查询列表。
页面代码:
<script type="text/javascript">
function searchSuccess(result) {
alert("查询成功!返回结果是:\n\n" + result);
}
</script>
@using (Ajax.BeginForm("SearchList", "Account", null, new AjaxOptions
{
InsertionMode = InsertionMode.Replace, //插入模式
HttpMethod = "GET",
OnFailure = "", //失败调用函数
OnBegin = "", //开始调用之前
OnComplete = "", //调用成功之后
OnSuccess = "searchSuccess", //成功调用函数
LoadingElementId = "ajax-loader", //加载中元素ID
UpdateTargetId = "searchresults" //更新元素ID
}))
{
<input type="text" name="queryString" />
<input type="submit" value="查询" />
<img id="ajax-loader" src="@Url.Content("~/Content/Images/ajax-loader.gif")" style="display:none" />
<div id="searchresults">
</div>
}
这里可以不必指定OnSuccess参数,因为指定的InsertionMode和UpdateTargetId参数会自动更新匹配的元素。
当然,这需要在控制器中返回上下文或视图。
CS代码:
public ActionResult SearchList(string queryString)
{
List<string> resultList = new List<string>();
resultList.Add("张三");
resultList.Add("李四");
resultList.Add("王五");
resultList.Add("赵六");
resultList.Add("张一");
resultList.Add("张二");
var result = resultList.Where(e => e.Contains(queryString)).ToArray();
return Content(string.Join("<br/>", result));
}
这里通过关键字查询姓名列表并返回一个上下文。
页面效果:

当然也可以返回其它格式(如Json字符串)。
页面代码:
<script type="text/javascript">
function searchSuccess(rs) {
if (rs.success) {
var html = "";
for (var i in rs.result) {
html += rs.result[i].Name + " " + rs.result[i].Age + " " + rs.result[i].Height + "<br/>";
}
$("#searchresults").html(html);
}
}
</script>
@using (Ajax.BeginForm("SearchJson", "Account", null, new AjaxOptions
{
HttpMethod = "POST",
OnSuccess = "searchSuccess", //成功调用函数
LoadingElementId = "ajax-loader", //加载中元素ID
}))
{
<input type="text" name="queryString" />
<input type="submit" value="查询" />
<img id="ajax-loader" src="@Url.Content("~/Content/Images/ajax-loader.gif")" style="display:none" />
<div id="searchresults">
</div>
}
为了防止页面缓存,这里改用了POST的请求方式。成功时调用searchSuccess方法处理返回结果。
CS代码:
public JsonResult SearchJson(string queryString)
{
Dictionary<string, Person> dt = new Dictionary<string, Person>();
dt.Add("张三", new Person { Name = "张三", Age = , Height = 1.75 });
dt.Add("李四", new Person { Name = "李四", Age = , Height = 1.72 });
dt.Add("王五", new Person { Name = "王五", Age = , Height = 1.82 });
dt.Add("赵六", new Person { Name = "赵六", Age = , Height = 1.65 });
dt.Add("张一", new Person { Name = "张一", Age = , Height = 1.74 });
dt.Add("张二", new Person { Name = "张二", Age = , Height = 1.77 });
Hashtable ht = new Hashtable();
ht.Add("success", true);
ht.Add("result", dt.Where(e => e.Value.Name.Contains(queryString))
.ToDictionary(e => e.Key, e => e.Value));
return Json(ht, JsonRequestBehavior.AllowGet);
}
这里通过关键字查询,返回人员列表的Json对象。
页面效果:
MVC3 学习笔记 之(ajax表单)的更多相关文章
- Ext JS4 学习笔记之发送表单(Form)时也将表单下的表格(Grid)数据一同发送的方法
Ext JS4 学习笔记之发送表单(Form)时也将表单下的表格(Grid)数据一同发送的方法 昨天在开发的时候遇到个小问题,就是如何将Grid的内容与Form一起发送到服务器端.默认情况下,表单(F ...
- HTML5学习笔记<五>: HTML表单和PHP环境搭建
HTML表单 1. 表单用于不同类型的用户输入 2. 常用的表单标签: 标签 说明 <form> 表单 <input> 输入域 <textarea> 文本域 < ...
- Yii学习笔记之四(表单验证 api 翻译)
1.表单验证 对于用户输入的全部数据,你不能信任,必须加以验证. 全部框架如此.对于yii 能够使用函数 yii\base\Model::validate() 进行验证 他会返回boolean值的 ...
- knockoutJS学习笔记08:表单域绑定
前面的绑定都是用在基本标签上,这章主要讲表单域标签的绑定. 一.value 绑定 绑定标签:input text.textarea. <p>用户名:<input type=" ...
- HTML 学习笔记 JQuery(表单,表格 操作)
表单应用 一个表单有3个基本组成部分 (1)表单标签:包含处理表单数据所用的服务器端程序URL 以及数据提交到服务器的方法 (2)表单域:包含文本框 密码框 隐藏框 多行文本框 复选框 单选框 下拉选 ...
- redux-form的学习笔记二--实现表单的同步验证
(注:这篇博客参考自redux-form的官方英文文档)左转http://redux-form.com/6.5.0/examples/syncValidation/ 在这篇博客里,我将用redux-f ...
- HTML学习笔记8:表单
什么是表单? 一个网页表单可以将用户输入的数据发送到服务器进行处理.因为互联网用户使用复选框,单选按钮或文本字段填写表格,所以WebForms的形式类似文件或数据库.例如,WebForms ...
- PHP学习笔记 01 之表单传值
一.HTML传值/PHP接收方法 1.GET(地址栏+问号+数据信息) (1)方式一:表单Form: method = 'get' GET接收数据方式: $_GET['表单元素name对应的值] (2 ...
- 学习笔记之form表单
form表单提交的数据 是字典类型 这样 方便在create时候 直接解压
- angular学习笔记(二十)-表单验证
本篇主要介绍angular中的表单验证: 表单验证主要有以下一些内容: 1. required指令: 相当于html5的required属性,验证不能为空 2. ng-maxlength属性: 验证内 ...
随机推荐
- 各种高度的区别及height、clientHeight、scrollHeight、offsetHeight的区分
1.height.clientHeight.scrollHeight.offsetHeight 我们来实现test中的onclick事件 function justAtest() { ...
- [Android]Space控件的应用场景
Space控件是在Android 4.0中加入,是个空白的view,一般用于填充View组件中的间隙. support-v4包里提供了兼容低版本的Space控件. 源码分析 Space控件源码非常简单 ...
- git day01笔记 常用操作命令 快照 推送 拉取
ansible 批量在远程主机上执行命令或者脚本 git 做版本控制的一个工具 ## git操作命令: 工作区:当前编辑的区域 缓存区:add 之后的区域 本地仓库:commit之后的区域 远程仓 ...
- 关于JSP的淘汰问题(转)
来源:http://1t.click/peD 大中型公司需要专业人才,小公司需要全才,但是对于个人职业发展来说,我建议是分开.你要是这辈子就吃java这碗饭,就不要去研究什么css,js等等. 把你的 ...
- day39-Spring 19-今天的内容总结
- 微服务开源生态报告 No.4
「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展. 社区动态包括,但不限于:版本发布.人员动态.项目动态和规划.培训和活动. 非常欢迎国内其他微服 ...
- hdu 1728 逃离迷宫 BFS加优先队列 DFS()
http://acm.hdu.edu.cn/showproblem.php?pid=1728 题意就是能否在规定的转弯次数内从起点走到终点.刚走时那步方向不算. 只会bfs(),但想到这题需要记录转弯 ...
- json,pickle模块
序列化 把对象从内存中编成可储存或传输的过程称之为序列化,输出为json串,.json文件 反序列化 把json串反编成Python数据类型 json模块 用于跨平台交互 json模块下不可转换集合( ...
- Python学习之路7☞装饰器
一:命名空间与作用域 1.1命名空间 局部命名空间: def foo(): x=1 def func(): pass 全局命名空间: import time class ClassName:pass ...
- hdu1421 dp
用dp[i][j]表示放了i件物品,j对时的最小值. dp[i-2][j-1]表示取当前的 dp[i-1][j]表示不取当前的. #include<stdio.h> #include< ...