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. D3D10/11中的遮挡查询的使用

    原文:D3D10/11中的遮挡查询的使用       在D3D10/11中,有D3D10_QUERY/D3D11_QUERY接口,通过QUERY接口,我们可以查询GPU的一些状态,比如GPU的时间戳信 ...

  2. 2019.9.19登陆注册猜数字给奖品combo

    #注册函数 def register(): registor_count = 0 while registor_count < 3: username_inp = input('user nam ...

  3. 【转】Sprague-Grundy函数

    http://www.cnitblog.com/weiweibbs/articles/42735.html 上一期的文章里我们仔细研究了Nim游戏,并且了解了找出必胜策略的方法.但如果把Nim的规则略 ...

  4. linux驱动开发满三年,回首一下基本看不到其它选择

    刚刚搞完一个处理器BSP项目,准备搞下一个自研处理器.说不上来什么喜悦,仅仅有些许茫然.没有刚毕业时对这个行业的痴迷,慢慢认同这仅仅是个谋生工具的想法. 回忆当初编写第一个驱动,就像上了战场.被长官踢 ...

  5. iOS用同一个工程创建两个不同版本的应用

    http://www.cocoachina.com/ios/20150916/13324.html 如果同一个应用, 需要做一个带广告Lite版本, 一个不带广告的Pro版本. 那么问题来了, 该如何 ...

  6. python 源文件编码

  7. @游记@ CSP2019

    目录 @day -??@ @day -1@ @day 0@ @day 1@ @day 2@ @day ??@ @day ??+1@ @day -??@ 和 yhn 学长在校外偶遇. 聊了一些.他说现在 ...

  8. @CSP模拟2019.10.16 - T3@ 垃圾分类

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 为了保护环境,p6pou建设了一个垃圾分类器. 垃圾分类器是一个 ...

  9. 权重衰减(weight decay)与学习率衰减(learning rate decay)

    本文链接:https://blog.csdn.net/program_developer/article/details/80867468“微信公众号” 1. 权重衰减(weight decay)L2 ...

  10. Microsoft.SQL.Server2012.Performance.Tuning.Cookbook学习笔记(一)

    一.Creating a trace or workload 注意点: In the Trace Properties dialog box, there is a checkbox option i ...