在上一篇介绍MVC中的Ajax实现方法的时候,曾经提到了除了使用Ajax HTML Helper方式来实现之外,Jquery也是实现Ajax的另外一种方案。

通过get方法实现AJax请求

View

  1. <script type="text/javascript">
  2. function GetTime() {
  3. $.get("Home/GetTime", function (response) {
  4. $("#myPnl").html(response);
  5. });
  6.  
  7. return false;
  8. }
  9. </script>
  10. <div id="myPnl" style="width: 300px; height: 30px; border: 1px dotted silver;">
  11. </div>
  12. <a href="#" onclick="return GetTime();">Click Me</a>

Controller

  1. public ActionResult GetTime()
  2. {
  3. return Content(DateTime.Now.ToString());
  4. }

通过post方法实现Form的Ajax提交

View

  1. @model MvcAjax.Models.UserModel
  2. @{
  3. ViewBag.Title = "AjaxForm";
  4. }
  5. <script type="text/javascript">
  6. $(document).ready(function () {
  7. $("form[action$='SaveUser']").submit(function () {
  8. $.post($(this).attr("action"), $(this).serialize(), function (response) {
  9. $("#myPnl").html(response);
  10. });
  11.  
  12. return false;
  13. });
  14. });
  15.  
  16. </script>
  17. <div id="myPnl" style="width: 300px; height: 30px; border: 1px dotted silver;">
  18. </div>
  19. @using (Html.BeginForm("SaveUser", "Home"))
  20. {
  21. <table>
  22. <tr>
  23. <td>
  24. @Html.LabelFor(m => m.UserName)
  25. </td>
  26. <td>
  27. @Html.TextBoxFor(m => m.UserName)
  28. </td>
  29. </tr>
  30. <tr>
  31. <td>
  32. @Html.LabelFor(m => m.Email)
  33. </td>
  34. <td>
  35. @Html.TextBoxFor(m => m.Email)
  36. </td>
  37. </tr>
  38. <tr>
  39. <td>
  40. @Html.LabelFor(m => m.Desc)
  41. </td>
  42. <td>
  43. @Html.TextBoxFor(m => m.Desc)
  44. </td>
  45. </tr>
  46. <tr>
  47. <td colspan="2">
  48. <input type="submit" value="Submit" />
  49. </td>
  50. </tr>
  51. </table>
  52. }

Model

  1. using System.ComponentModel.DataAnnotations;
  2.  
  3. namespace MvcAjax.Models
  4. {
  5. public class UserModel
  6. {
  7. [Display(Name = "Username")]
  8. public string UserName { get; set; }
  9.  
  10. [Display(Name = "Email")]
  11. public string Email { get; set; }
  12.  
  13. [Display(Name = "Description")]
  14. public string Desc { get; set; }
  15. }
  16. }

Controller

  1. [HttpPost]
  2. public ActionResult SaveUser(UserModel userModel)
  3. {
  4. //Save User Code Here
  5. //......
  6.  
  7. return Content("Save Complete!");
  8. }

以上代码实现了Jquery POST提交数据的方法。

通过查看以上两种Jquery方式的Ajax实现方法,和之前AJax HTML Helper比较可以发现其实Controller都是相同的。

采用Jquery方式提交数据的的主要实现方案就是通过Jquery的get或者post方法,发送请求到MVC的controller中,然后处理获取的response,更新到页面中。

注意点:

无论是使用超链接和form方式来提交请求,javascript的方法始终都有一个返回值false,用来防止超链接的跳转或者是form的实际提交。

这个地方就会出现一个疑问:

如果针对该页面禁止了Javascript脚本,那么该页面就是跳转或者是form就是提交,返回的ActionResult处理就会出现问题了。

这个时候就需要在Controller中判断该请求是否是Ajax请求,根据不同的情况返回不同的ActionResult:

  1. [HttpPost]
  2. public ActionResult SaveUser(UserModel userModel)
  3. {
  4. //Save User Code Here
  5. //......
  6.  
  7. if (Request.IsAjaxRequest())
  8. return Content("Save Complete!");
  9. else
  10. return View();
  11. }

mvc_ajax_for form的更多相关文章

  1. form表单验证-Javascript

    Form表单验证: js基础考试内容,form表单验证,正则表达式,blur事件,自动获取数组,以及css布局样式,动态清除等.完整代码如下: <!DOCTYPE html PUBLIC &qu ...

  2. Form 表单提交参数

    今天因为要额外提交参数数组性的参数给form传到后台而苦恼了半天,结果发现,只需要在form表单对应的字段html空间中定义name = 后台参数名 的属性就ok了. 后台本来是只有模型参数的,但是后 ...

  3. s:form标签

    2017-01-07 17:43:18 基本的用法 <!-- Action类必须有一个无参的构造器,因为在执行action方法之前,拦截器已经创建了一个"空"的Action对 ...

  4. ASP.NET Aries JSAPI 文档说明:AR.Form、AR.Combobox

    AR.Form 文档 1:对象或属性: 名称 类型 说明 data 属性 编辑页根据主键请求回来的数据 method 属性 用于获取数据的函数指向,默认值Get objName 属性 用于拦截form ...

  5. form表单 ----在路上(15)

    form 表单就是将用户的信息提交到服务器,服务器会将信息存储活着根据信息查询数据进行增删改查,再将其返回给用户. 基本格式: <form action="" method ...

  6. 了解HTML表单之form元素

    前面的话 表单是网页与用户的交互工具,由一个<form>元素作为容器构成,封装其他任何数量的表单控件,还有其他任何<body>元素里可用的标签 表单能够包含<input& ...

  7. form表单的字符串进行utf-8编码

    <form>表单有assept-charset属性.该属性规定字符的编码方式,默认是"unknown",与文档的字符集相同. 该属性除了Internet explore ...

  8. js Form.elements[i]的使用实例

    function pdf(){    //一个html里面可能存在多个form,所以document.form[0]指的是第一个form,document.form[1]返回就是第二个form,如果没 ...

  9. PHP跨域form提交

    因为安全性因素,直接跨域访问是不被允许的. 1.PHP CURL方式 function curlPost($url,$params) { $postData = ''; foreach($params ...

随机推荐

  1. Java [leetcode 25]Reverse Nodes in k-Group

    题目描述: Given a linked list, reverse the nodes of a linked list k at a time and return its modified li ...

  2. 说下 winOS / IOS / android /Linux 视频、音频 编码解码问题

    最近有朋友遇到一个问题, ios 上传视频文件,想在本地压缩下,然后再上传到服务器. 问有没有什么 视频处理的库, 最近Khronos的webgl 支持HTML5 ,(原理 WebGL 是openGL ...

  3. JMX-JAVA进程监控利器

    Java 管理扩展(Java Management Extension,JMX)是从jdk1.4开始的,但从1.5时才加到jdk里面,并把API放到java.lang.management包里面. 如 ...

  4. SqlServer将日期格式DateTime转换成varchar类型

    Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE( ...

  5. 《Oracle Database 12c DBA指南》第二章 - 安装Oracle和创建数据库(2.2 安装数据库软件)

    当前关于12c的中文资料比较少,本人将关于DBA的一部分官方文档翻译为中文,很多地方为了帮助中国网友看懂文章,没有按照原文句式翻译,翻译不足之处难免,望多多指正. 2.2 安装数据库软件 这部分简短讲 ...

  6. CVTE面试经历

    CVTE也算一般的公司,很偏,不想说.我重点说一下面试的过程,我面试的C++程序开发工程师. 1.自我介绍自己的基本情况. 2.首先问你了解C++的面向对象么,他有哪些主要内容.对面向对象中的多态性你 ...

  7. EasyUI + Spring MVC + hibernate实现增删改查导入导出

    (这是一个故事--) 前言 作为一个JAVA开发工程师,我觉得最基本是需要懂前端.后台以及数据库. 练习的内容很基础,包括:基本增删改查.模糊查询.分页查询.树菜单.上传下载.tab页 主管发我一个已 ...

  8. Python解释器

    当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件.要运行代码,就需要Python解释器去执行.py文件. 由于整个Python语言从规范到解释器都是开源的 ...

  9. WinForm中当TextBox重新获得焦点时输入法失效问题

    在winform 中,每当TextBox获得焦点时,部分输入法会失效(如智能ABC.五笔98.极品五笔等),需要重新切换输入法才能正常使用. 此时要将Form的ImeMode属性改为:OnHalf(或 ...

  10. _int、NSInteger、NSUInteger、NSNumber的区别和联系

    1.首先先了解下NSNumber类型: 苹果官方文档地址:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/F ...