我们知道使用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. mongodb 性能提高之利用索引, 待续

    > 10 , 用户无法忍受 >1s , 需要加装中提示 数据库对软件整体影响是不言而喻的, 那么使用 MOngoDB时 该如何提高数据库性能 第一: 索引, 相当于记忆法的 地点桩 1. ...

  2. Jquery 返回顶部

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  3. excel中的数据导入oracle方法

    SQL_loader批量上传数据 1.    注释 在工作中,很多时候会遇到如下情况:需要将excel中的数据批量上传到ORACLE表中.如果是小数据量,如几十条至几百条,那么用plsql dev工具 ...

  4. ECMAScript6标准新增加的内容

    首选呐,你得了解一下javascript和ECMAScript的关系: 编程语言JavaScript是ECMAScript的实现和扩展,由ECMA(一个类似W3C的标准组织)参与进行标准化.ECMAS ...

  5. HDU 1008 u Calculate e

    Problem Description A simple mathematical formula for e is where n is allowed to go to infinity. Thi ...

  6. CSS3背景颜色渐变效果

    1.firefox浏览器: background-image: -moz-linear-gradient(top , #eef9fe, #d1ecff); 2.safari.chrome浏览器: ba ...

  7. js正则函数中test和match的区别

    test是RegExp的方法,参数是字符串,返回值是boolean类型. match是String的方法,参数是正则表达式,返回值是数组. <script type="text/jav ...

  8. openwrt拦截snmp报文

    SNMP使用的协议为UDP,默认端口为161和162. 使用iptables 命令如下: iptables -A INPUT -p udp -m udp --dport 161:162 -j DROP ...

  9. vconfig

    创建虚拟的vlan设备 例如: vconfig  add eth0  10 就创建了一个eth0.10的设备 vconfig的使用说明如下: root@hbg:/# vconfigBusyBox v1 ...

  10. 一个简单的IM系统(Demo附源码)-- ESFramework 4.0 快速上手(08)

    前面的文章已经介绍完了基于ESFramework/ESPlus进行二次开发的所有要点,现在,我们可以开始小试牛刀了. 本文将介绍使用ESFramework的Rapid引擎开发的两个最简单的Demo,E ...