ASP.NET MVC View向Controller提交数据

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

一、通过Json数据


方法
一:使用$.getJSON

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


方法二:使用$.get

    //方式二:根据页码 异步请求 数据
    function loadPageList(pageIndex) {

        $.get("/Stu/List/" + pageIndex, null, function (jsonData) {
            if (jsonData.Statu == "ok") {
                $("#tbList tr:gt(0)").remove();
                $("#trTemp").tmpl(jsonData.Data.PagedData).appendTo("#tbList");
                //生成页码条
                makePageBar(loadPageList, document.getElementById("pageBar"), jsonData.Data.PageIndex, jsonData.Data.PageCount, 2, jsonData.Data.RowCount);
            }
        }, "json");        

    }

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


二、通过From表单


方法一:使用Ajax.BeginForm

        <!-------------- 添加对话框--开始----------------------------------------->
        <div id="addDiv">
            @using (Ajax.BeginForm("Add", new AjaxOptions() { OnSuccess = "afterAdd" }))
            {
            <table>
                <tr>
                    <td>系列名称:</td>
                    <td>
                        @Html.TextBox("SerialName")
                    </td>
                </tr>

            </table>
            }

        </div>

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

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

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

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

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

        $('#ff').form('submit', {
            url: "/NotifyManage/ImportWord/",
            onSubmit: function () {
                // do some check
                // return false to prevent submit;
            },
            success: function (data) {

                $("#importDiv").dialog("close");
            }
        });

三、通过String字符串


方法一:提交单个字符串

        function Delete(index) {

            var id = $('#tt').datagrid("getRows")[index].ID;   

            $.messager.confirm('确认', '您确定要删除?', function (r) {
                if (r) {
                    $.post("/Administrator/Del"+id, function (data) {
                        if (data == "ok") {
                            //刷新表格,去掉选中状态的 那些行。
                            $('#tt').datagrid("reload");
                            $('#tt').datagrid("clearSelections");
                        } else {
                            $.messager.alert("删除失败~~", data);
                        }
                    });
                }
            });
        }


方法二:提交多个字符串

            //确认设置互评信息按钮事件
            function OK() {
                //①取得权重的值ID
                var weightID = $('#cc').combobox('getValue');

                //②获取评论人ID
                var rows = $('#left').datagrid("getRows");
                var evaluaterIDs = "";
                for (var i = 0; i < rows.length; i++) {
                    evaluaterIDs += rows[i].ID + ",";
                }
                evaluaterIDs = evaluaterIDs.substr(0, evaluaterIDs.length - 1);

                //③获取被评论人ID
                var rows = $('#right').datagrid("getRows");
                var criticsIDs = "";
                for (var i = 0; i < rows.length; i++) {
                    criticsIDs += rows[i].ID + ",";
                }
                criticsIDs = criticsIDs.substr(0, criticsIDs.length - 1);               

                //④提交到后台
                $.post("/SettingEvaluation/SettingEvaluation",
                         { wid: weightID, eids: evaluaterIDs, cids: criticsIDs });

            }

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

总结:

刚接触这部分内容的时候,感觉很凌乱,总结粘贴复制别人的代码,在学习的过程中遇到不会的知识点通过查询easyui帮助文档或者自己思考去解决,思路一点一点的清晰,答案也就一步一步地出来了。有一点感触就是,还是在项目中学习到的东西比较牢靠,因为有亲自动手去实践,动脑去思考;同时,在项目中也培养了我们的细心和耐心,在解决问题中渐渐成长。

时间: 2024-12-15 08:32:08

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

ASP.NET MVC view与controller传值方式

1: ViewData传值方式ViewData的生命周期和View相同, 只对当前View有效.   ViewData["zd"] = dfdfd2:TempData传值方式   可以跨Action传递   TempData的数据至多只能经过一次Controller传递, 并且每个元素至多只能被访问一次,     例如一个用法为,抛出一个异常.跳转到error页面public ActionResult Index3(){      TempData["tempIndex&qu

ASP.NET MVC中 在controller 里将 Partial View 转化为字符串的方法

namespace Common.Helper { public static class ControllerExtension { //根据部分视图名称,把部分视图内容转换成字符串 public static string RenderPartialViewToString(this Controller controller, string partialViewName) { return controller.RenderPartialViewToString(partialViewN

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

这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第六篇:为ASP.NET MVC应用程序读取相关数据 原文:Reading Related Data with the Entity Framework in an ASP.NET MVC Application 译文版权所有,谢绝全文转载--但您可以在您的网站上添加到该教程的链接. 在之前的教程中您已经完成了学校数据模型.在本教程中你将

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

这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第六篇:为ASP.NET MVC应用程序更新相关数据 原文: Updating Related Data with the Entity Framework in an ASP.NET MVC Application 译文版权所有,谢绝全文转载--但您可以在您的网站上添加到该教程的链接. 在之前的教程中您已经成功显示了相关数据.在本教程中

ASP.Net MVC View

ASP.Net MVC View(视图) View视图职责是向用户提供界面.负责根据提供的模型数据,生成准备提供给用户的格式界面. 支持多种视图引擎(Razor和ASPX视图引擎是官方默认给出的,其实还支持其它N种视图引擎,甚至你自己都可以写一套视图引擎) View和Action之间数据传递(前后台数据传递) 弱类型 ViewData[""] 动态型 ViewBag //dynamic 动态类型Model             后台:return View(data); //存入 V

白话ASP.NET MVC之三:Controller是如何解析出来的

我们在上一篇文章中介绍Controller激活系统中所涉及到的一些类型,比如有关Controller类型的相关定义类型就包括了IController类型,IAsyncController类型,ControllerBase抽象类型和我们最终要使用的抽象类型Controller,这是ASP.NET MVC 框架中和Controller本身定义相关的类型.其他辅助类型,包括管理Controller的类型ControllerFactory,这个工厂负责Controller的生产和销毁.我们还涉及到另一个

ASP.NET MVC 4 中的JSON数据交互

前台Ajax请求很多时候需要从后台获取JSON格式数据,一般有以下方式: 拼接字符串 return Content("{\"id\":\"1\",\"name\":\"A\"}"); 为了严格符合Json数据格式,对双引号进行了转义. 使用JavaScriptSerialize.Serialize()方法将对象序列化为JSON格式的字符串 MSDN 例如我们有一个匿名对象: var tempObj=new

ASP.NET MVC View使用Conditional compilation symbols

由于View(.cshtml)的运行时编译关系,在项目级别中定义的symbols是无法被直接使用的.需要在Web.config中添加compilerOptions(在View目录下的Web.config添加无效),该设置同样适用于ASP.NET其它技术.假如你需要一个TEST的定义,参考如下: Web.config <system.codedom> <compilers> <compiler language="c#;cs;csharp" extensio

【记录】ASP.NET MVC View 移动版浏览的奇怪问题

ASP.NET MVC View 中的一段代码: <span id="span_Id">@Model.ID</span> 没什么问题吧,浏览器浏览正常,查看元素为: <span id="span_Id">123456</span> 但如果是用手机浏览器,查看元素是这样的: <span id="span_Id"><a href="tel:123456">12