我们知道使用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. console.log 加样式

    console.log("%c%s", "color: black; font-size: 18px;", "test")

  2. Mac下配置Maven环境变量

    Mac下配置Maven环境变量 1.先到Apache官网下载maven压缩包.下载地址:http://maven.apache.org/download.cgi 2.Maven是用Java开发的,所以 ...

  3. OGG中断后,重新同步操作

    模拟一下goldengata中断后,重新同步操作: 1.关掉源端抽取进程 GGSCI (20081122-2105) 15> info all Program Status Group Lag ...

  4. 4、BufferedIn(out)putStream--->字节输入/输出流的缓冲区类(高效类:高效率读写)

    前言 字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多,这是加入了数组这样的缓冲区效果,java本身在设计的时候,也考虑到了这样的设计思想(装饰设计模式后面讲解),所以提供了字节缓冲区流 ...

  5. JavaEE XML 基础知识

    JavaEE XML 基础知识 @author ixenos 1.    XML开头都需要一个声明 <?和?>表明这是一个处理指令 <?xml version=”1.0” encod ...

  6. H5 - 在线编辑制作

    [百度H5商店]http://h5.baidu.com/store [木疙瘩在在线制作]http://www.mugeda.com/ [百度在线制作工具]http://h5.baidu.com/ [易 ...

  7. 0. Java开发中的23种设计模式详解(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  8. java对数计算

    Java对数函数的计算方法非常有问题,然而在API中却有惊人的误差.但是假如运用了以下的方法,用Java处理数字所碰到的小麻烦就可以轻而易举的解决了. Sun的J2SE提供了一个单一的Java对数方法 ...

  9. Openjudge-计算概论(A)-数组顺序逆放

    描述: 将一个数组中的值按逆序重新存放.例如,原来的顺序为8,6,5,4,1.要求改为1,4,5,6,8.输入输入为两行:第一行数组中元素的个数n(1<n<100),第二行是n个整数,每两 ...

  10. 重拾Ruby—新的征程

    作家格拉德威尔在<异类>一书中指出: “人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力.1万小时的锤炼是任何人从平凡变成超凡的必要条件.“ 他将此称为“一万小时定 ...