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 + "&nbsp;" + rs.result[i].Age + "&nbsp;" + 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表单)的更多相关文章

  1. Ext JS4 学习笔记之发送表单(Form)时也将表单下的表格(Grid)数据一同发送的方法

    Ext JS4 学习笔记之发送表单(Form)时也将表单下的表格(Grid)数据一同发送的方法 昨天在开发的时候遇到个小问题,就是如何将Grid的内容与Form一起发送到服务器端.默认情况下,表单(F ...

  2. HTML5学习笔记<五>: HTML表单和PHP环境搭建

    HTML表单 1. 表单用于不同类型的用户输入 2. 常用的表单标签: 标签 说明 <form> 表单 <input> 输入域 <textarea> 文本域 < ...

  3. Yii学习笔记之四(表单验证 api 翻译)

    1.表单验证 对于用户输入的全部数据,你不能信任,必须加以验证. 全部框架如此.对于yii 能够使用函数  yii\base\Model::validate()  进行验证 他会返回boolean值的 ...

  4. knockoutJS学习笔记08:表单域绑定

    前面的绑定都是用在基本标签上,这章主要讲表单域标签的绑定. 一.value 绑定 绑定标签:input text.textarea. <p>用户名:<input type=" ...

  5. HTML 学习笔记 JQuery(表单,表格 操作)

    表单应用 一个表单有3个基本组成部分 (1)表单标签:包含处理表单数据所用的服务器端程序URL 以及数据提交到服务器的方法 (2)表单域:包含文本框 密码框 隐藏框 多行文本框 复选框 单选框 下拉选 ...

  6. redux-form的学习笔记二--实现表单的同步验证

    (注:这篇博客参考自redux-form的官方英文文档)左转http://redux-form.com/6.5.0/examples/syncValidation/ 在这篇博客里,我将用redux-f ...

  7. HTML学习笔记8:表单

      什么是表单?     一个网页表单可以将用户输入的数据发送到服务器进行处理.因为互联网用户使用复选框,单选按钮或文本字段填写表格,所以WebForms的形式类似文件或数据库.例如,WebForms ...

  8. PHP学习笔记 01 之表单传值

    一.HTML传值/PHP接收方法 1.GET(地址栏+问号+数据信息) (1)方式一:表单Form: method = 'get' GET接收数据方式: $_GET['表单元素name对应的值] (2 ...

  9. 学习笔记之form表单

    form表单提交的数据 是字典类型 这样 方便在create时候 直接解压

  10. angular学习笔记(二十)-表单验证

    本篇主要介绍angular中的表单验证: 表单验证主要有以下一些内容: 1. required指令: 相当于html5的required属性,验证不能为空 2. ng-maxlength属性: 验证内 ...

随机推荐

  1. 移动端的touch事件(一)

    如果我们允许用户在页面上用类似桌面浏览器鼠标手势的方式来控制WEB APP,这个页面上肯定是有很多可点击区域的,如果用户触摸到了那些可点击区域怎么办呢?? 诸如智能手机和平板电脑一类的移动设备通常会有 ...

  2. python中的输入和输出

    输入和输出   输出: 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'hello, world',用代码实现如下: >>> print('hello, ...

  3. OpenTelemetry-可观察性的新时代

    有幸在2019KubeCon上海站听到Steve Flanders关于OpenTelemetry的演讲,之前Ops领域两个网红项目OpenTracing和OpenCensus终于走到了一起,可观察性统 ...

  4. 阿里云发布SaaS加速器,用宜搭,像搭积木一样搭应用

    宜搭让不会编码的人也能快速搭建SaaS应用,大幅提升研发效率. (图:阿里云智能产品管理部总经理马劲在2019阿里云峰会·北京现场进行宜搭应用搭建演示. ) 3月21日,在2019阿里云峰会·北京上, ...

  5. [转]GDB调试基础

    一.gdb常用命令: 命令 描述 backtrace(或bt) 查看各级函数调用及参数 finish 连续运行到当前函数返回为止,然后停下来等待命令 frame(或f) 帧编号 选择栈帧 info(或 ...

  6. 【JZOJ4884】【NOIP2016提高A组集训第12场11.10】图的半径

    题目描述 mhy12345学习了树的直径,于是开始研究图的半径,具体来说,我们需要在图中选定一个地方作为中心,其中这个中心有可能在路径上. 而这个中心的选址需要能够使得所有节点达到这个中心的最短路里面 ...

  7. python 并发之进程

    一.什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实 ...

  8. 重装系统后ORACLE数据库恢复的方法

    如果我们的操作系统出现问题,重装系统后,ORACLE数据库应该如何恢复呢?下文就为您列举了两个重装系统后ORACLE数据库恢复的方法,供您参考. ORACLE数据库恢复的方法我们经常会用到,下面就为您 ...

  9. iis7服务器隐藏index.php

    1.安装url重写模块 32位:http://download.microsoft.com/download/4/9/C/49CD28DB-4AA6-4A51-9437-AA001221F606/re ...

  10. 2019-5-25-win10-uwp-win2d-入门-看这一篇就够了

    title author date CreateTime categories win10 uwp win2d 入门 看这一篇就够了 lindexi 2019-5-25 20:0:52 +0800 2 ...