我们知道使用MVC的一个很重的的用途就是把Controller和View之间进行解耦,通过控制器来调用不同的视图,这就注定了Controller和View之间的传值是一个很重的知识点,这篇博文主要解释一下View向Controller提交数据的几种形式,认识有限,有不足的地方请各位博友能够给完善。

一、通过Json数据

方法一:使用$.getJSON

  1. //方式一:根据页码 异步请求 数据
  2. function loadPageList(pageIndex) {
  3. $.getJSON("/Stu/List/" + pageIndex, null, function (jsonData) {
  4. if (jsonData.Statu == "ok") {
  5. $("#tbList tr:gt(0)").remove();
  6. $("#trTemp").tmpl(jsonData.Data.PagedData).appendTo("#tbList");
  7. //生成页码条
  8. makePageBar(loadPageList, document.getElementById("pageBar"), jsonData.Data.PageIndex, jsonData.Data.PageCount, 2, jsonData.Data.RowCount);
  9. }
  10. });
  11. }

方法二:使用$.get

  1. //方式二:根据页码 异步请求 数据
  2. function loadPageList(pageIndex) {
  3. $.get("/Stu/List/" + pageIndex, null, function (jsonData) {
  4. if (jsonData.Statu == "ok") {
  5. $("#tbList tr:gt(0)").remove();
  6. $("#trTemp").tmpl(jsonData.Data.PagedData).appendTo("#tbList");
  7. //生成页码条
  8. makePageBar(loadPageList, document.getElementById("pageBar"), jsonData.Data.PageIndex, jsonData.Data.PageCount, 2, jsonData.Data.RowCount);
  9. }
  10. }, "json");
  11. }

上面这两种方式的到的结果是没有区别的,如果使用$.getJSON,相当于直接指明传递的数据为Json格式;如果使用$.get,则需要在最后加上参数类型"json"即可。

 二、通过From表单

方法一:使用Ajax.BeginForm

  1. <!-------------- 添加对话框--开始----------------------------------------->
  2. <div id="addDiv">
  3. @using (Ajax.BeginForm("Add", new AjaxOptions() { OnSuccess = "afterAdd" }))
  4. {
  5. <table>
  6. <tr>
  7. <td>系列名称:</td>
  8. <td>
  9. @Html.TextBox("SerialName")
  10. </td>
  11. </tr>
  12. </table>
  13. }
  14. </div>

其中,"Add"是该表单要提交到的Action的名字,OnSuccess="afterAdd"是该表单提交后要执行的js事件,然后再js代码中编写让表单提交的命令即可。

  1. //让表单提交
  2. $("#addDiv form").submit();

方法二:使用<form></form>

  1. <!--导入Word-->
  2. <div id="importDiv" style="display: none">
  3. <form id="ff" action="/NotifyManage/ImportWord" method="post" enctype="multipart/form-data">
  4. <div style="margin-bottom: 20px">
  5. <input id="FileUpload" type="file" name="files" data-options="prompt:'请选择一个文件...'" />
  6. </div>
  7. </form>
  8. </div>

然后,使用easyui的jquery提交如下:

  1. $('#ff').form('submit', {
  2. url: "/NotifyManage/ImportWord/",
  3. onSubmit: function () {
  4. // do some check
  5. // return false to prevent submit;
  6. },
  7. success: function (data) {
  8. $("#importDiv").dialog("close");
  9. }
  10. });

在这里,有一点需要注意的是,easyui中form提交的url是无法传参的,如果你想通过url传参的话,就需要另外一种形式了。

  1. var fileName = document.getElementById("file").value;
  2. $('#add').form('submit');
  3. $.post("/NotifyManage/Add",
  4. { fileName: fileName },
  5. function (data) {
  6. if (data == "ok") {
  7. //关闭对话框,刷新表
  8. $("#addDiv").dialog("close");
  9. //initTable();
  10. $('#tt').datagrid("reload");
  11. } else {
  12. $.messager.alert("提示消息", data);
  13. }
  14. });

   三、通过String字符串

方法一:提交单个字符串

  1. function Delete(index) {
  2. var id = $('#tt').datagrid("getRows")[index].ID;
  3. $.messager.confirm('确认', '您确定要删除?', function (r) {
  4. if (r) {
  5. $.post("/Administrator/Del"+id, function (data) {
  6. if (data == "ok") {
  7. //刷新表格,去掉选中状态的 那些行。
  8. $('#tt').datagrid("reload");
  9. $('#tt').datagrid("clearSelections");
  10. } else {
  11. $.messager.alert("删除失败~~", data);
  12. }
  13. });
  14. }
  15. });
  16. }

方法二:提交多个字符串

  1. //确认设置互评信息按钮事件
  2. function OK() {
  3. //①取得权重的值ID
  4. var weightID = $('#cc').combobox('getValue');
  5. //②获取评论人ID
  6. var rows = $('#left').datagrid("getRows");
  7. var evaluaterIDs = "";
  8. for (var i = 0; i < rows.length; i++) {
  9. evaluaterIDs += rows[i].ID + ",";
  10. }
  11. evaluaterIDs = evaluaterIDs.substr(0, evaluaterIDs.length - 1);
  12. //③获取被评论人ID
  13. var rows = $('#right').datagrid("getRows");
  14. var criticsIDs = "";
  15. for (var i = 0; i < rows.length; i++) {
  16. criticsIDs += rows[i].ID + ",";
  17. }
  18. criticsIDs = criticsIDs.substr(0, criticsIDs.length - 1);
  19. //④提交到后台
  20. $.post("/SettingEvaluation/SettingEvaluation",
  21. { wid: weightID, eids: evaluaterIDs, cids: criticsIDs });
  22. }

提交字符串实际上是根据路由地址中的格式匹配的,提交的格式要和路由中设置的保持一致。

ASP.NET MVC View向Controller提交数据的更多相关文章

  1. ASP.NET MVC View向Controller传值方式总结

    1:QueryString传值1)也可以使用new{}来为form的action增加querystring2)在controler里使用Request.QueryString["word&q ...

  2. 解析ASP.NET Mvc开发之删除修改数据

    目录: 1)从明源动力到创新工场这一路走来 2)解析ASP.NET WebForm和Mvc开发的区别 3)解析ASP.NET Mvc开发之查询数据实例 4)解析ASP.NET Mvc开发之EF延迟加载 ...

  3. 解析ASP.NET Mvc开发之删除修改数据 分类: ASP.NET 2014-01-04 23:41 3203人阅读 评论(2) 收藏

    目录: 从明源动力到创新工场这一路走来 解析ASP.NET WebForm和Mvc开发的区别 解析ASP.NET 和Mvc开发之查询数据实例 解析ASP.NET Mvc开发之EF延迟加载 ------ ...

  4. 【ASP.NET MVC系列】浅谈数据注解和验证

    [ASP.NET MVC系列]浅谈数据注解和验证   [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google C ...

  5. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序读取相关数据

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第七篇:为ASP.NET MVC应用程序 ...

  6. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序更新相关数据

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第八篇:为ASP.NET MVC应用程序 ...

  7. ASP.NET MVC 3.0 Controller基础

    ASP.NET MVC 3.0 Controller基础   1.Controller类与方法 Controller(控制器)是ASP.NET MVC的核心,负责处理浏览器请求,并作出响应.Cotro ...

  8. ASP.Net MVC View

    ASP.Net MVC View(视图)   View视图职责是向用户提供界面.负责根据提供的模型数据,生成准备提供给用户的格式界面. 支持多种视图引擎(Razor和ASPX视图引擎是官方默认给出的, ...

  9. ASP.NET MVC应用程序更新相关数据

    为ASP.NET MVC应用程序更新相关数据 这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译, ...

随机推荐

  1. spark-2.0.0与hive-1.2.1整合

    SparkSQL与Hive的整合 1. 拷贝$HIVE_HOME/conf/hive-site.xml和hive-log4j.properties到 $SPARK_HOME/conf/ 2. 在$SP ...

  2. SSLPinning 延伸

    AFSecurityPolicy用于验证HTTPS请求的证书,先来看看HTTPS的原理和证书相关的几个问题. HTTPS HTTPS连接建立过程大致是,客户端和服务端建立一个连接,服务端返回一个证书, ...

  3. Linux服务器建站基础-选择何种配置和安装环境项目

    我们准备在搬瓦工笔记中,边整理和分享利用Linux VPS建站过程的同时,也会分享关于用户在选择和使用VPS服务器以及网站管理运营中的一些心得和建议.经常有很多网友在很多主机论坛.QQ群众问道,有没有 ...

  4. Android View的事件分发

    如果接触android开发时间足够长的话,或多或少都会遇到各种各样事件冲突的问题,要想解决这类问题,对深入理解事件分发机制是很有必要的,接下来几天都会尽自己所能尽可能将这方面讲清楚.  View的事件 ...

  5. 1.rs.first()、rs.last()、rs.next()、rs.getRow()

    rs.first()获取第一条数据的信息rs.last()获取最后一条数据的信息rs.next()获取下一条数据的信息rs.getRow()获取当前信息的行数 import java.sql.*; p ...

  6. C#Stopwatch的使用,性能测试

    一,先开启开始或继续测量某个时间间隔的运行时间,然后停止,最后重置时间,输出. using System; using System.Collections.Generic; using System ...

  7. 2016 ASC 移动物联网安全高峰论坛 万物互联时代的安全与隐私

    互联网的发展已经迈入了"万物互联"时代.移动设备作为人.物连接的主要入口,让人们享受高效.便利的"互联生活"的同时,也给用户的安全和隐私带来了前所未有的挑战.正 ...

  8. PHP常用代码大全(新手入门必备)

    PHP常用代码大全(新手入门必备),都是一些开发中常用的基础.需要的朋友可以参考下.   1.连接MYSQL数据库代码 <?php $connec=mysql_connect("loc ...

  9. apt-get dpkg lock 和 debconf 问题

    一: 在用sudo apt-get install 安装软件时,由于速度太慢,想换个软件源,直接关闭了终端,apt-get但进程没有结束,结果终端提示 E: Could not get lock /v ...

  10. Django中使用ModelForm实现Admin功能

    接上一篇<Django中使用Bootstrap> ModelForm 可以将数据库中的信息展示在一个表中,因此我们在查询数据库信息时可以使用ModelForm在前端展示查询到的信息. 在上 ...