MVC中Controller间的传值、Controller到View的传值方法

从做了考试以来,和别人也进行了交流,发现系统内部的传值算是一个比较费劲的问题。这篇博客讲解两种传值的情况——MVC中Controller间的传值,这里包括了第二种Controller到View的传值。

示例:我有两个Controller:C1和C2,我想把C1中的课程实体的课程ID传到C2中。方案是先把C1中的课程ID传到C2对应的View页面的地址栏中,然后C2从自己的View页面中获取。

来看代码:

//下面是一个easyUI的表格,执行ScoringManagementCotroller下的QueryAllExamInfo方法
<table id="dg1" class="easyui-datagrid" style="width: auto; height: auto; url="/ScoringManagement/QueryAllExamInfo" title="查询结果" data-options="fitColumns:true,singleSelect:true" sortname="courseId" sortorder="asc" rownumbers="true" pagination="true">
                <thead style="width: 420px; height: auto;">
                    <tr>
                        //下面是一个表格单元的列,点击此列下的内容,执行test1函数
                        <th data-options="field:'Operation',width:80,align:'center',formatter:test1">开始判分</th>
                    </tr>
                    <script type="text/ecmascript">
                        function test1(value, row) {
                            //转到下一页的链接地址,其中包含选中的考试科目的ID
                            return '<a href="../QuestionSelection/Index?CourseId=' + row.CourseId + '">开始判分</a>'
                            $('#dg1').datagrid('reload');
                            $('#dg1').datagrid('clear');//清除表格痕迹
                        }
                    </script>
                </thead>
            </table>

这段代码展示了怎么把C1中的字段值CourseID 传到C2的View视图 在浏览器的地址栏中。

下面看看C2怎么获取自己View页面地址栏的CourseId,这里可谓是一波三折了。

1、首先在C2默认Action中获取它的值:

        public ActionResult Index()
        {
            ViewData["Id"] = Request.QueryString["CourseId"];  //课程ID,从本页面的链接地址获得
            return View();
        }

2、把获取的值传到View视图中一个隐藏文本框中

        <input id="a" type ="text" hidden="hidden" value="@ViewData["Id"]" />

3、C2中的其他Action获取此值

                      $('#cboQuestionType').combobox({
                            onClick: $(function (cbox) {
                                var CourseID = "@ViewData["Id"].ToString()";
                            $.ajax({
                                type: "POST",
                                async: false,
                                url: '../QuestionSelection/[email protected]["Id"]',
                                data: { "CourseId": CourseID },
                                datatype: JSON,
                                success: function (data) {
                                    $('#cboQuestionType').combobox('clear').combobox('loadData', data);
                                    $('#cboQuestionType').combobox('setValue', '请选择题型')
                                }
                            })
                        })

这是一段Javascript代码,通过单击下拉框执行QueryQuestionTypeByCourse方法,这个方法是在QuestionSelection这个Controller中的。

先获取CourseID的值,然后通过data发送到后台Controller中。

4、最后C2获取CourseID

         //把前台传送回来的课程ID  存放到 课程题型 实体中
         ExamCourseQuestionTypeEntity enCourseQuestionType = new ExamCourseQuestionTypeEntity();
         enCourseQuestionType.CourseId = Request["Id"].ToString();//课程ID,从页面的隐藏字段获得

总结:这里的传值总的来说是比较麻烦的,目前还没找到更好的方法,大家如果有好的建议欢迎留言~~这些方法都是需要大量查找和总结的,再加上平时的多交流和积累。

传值本身其实并不难,比较困难的是传值的技巧性和创新性,在哪传,用什么方式是一个很考验程序员思考灵活性的问题。

时间: 2024-10-13 12:00:38

MVC中Controller间的传值、Controller到View的传值方法的相关文章

如何在ASP.NET MVC 中获取当前URL、controller、action

一.URL的获取很简单,ASP.NET通用: [1]获取 完整url (协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取 虚拟目录名+页面名+参数: string url=Request.RawUrl;(或 string url=Request.Url.PathAndQuery;) [3]获取 虚拟目录名+页面名:string url=HttpContext.Current.Request.Url.AbsolutePath

Spring MVC 中的基于注解的 Controller【转】

原文地址:http://my.oschina.net/abian/blog/128028 终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响应请求.实际上,ControllerClassNameHandlerMapping, MultiActionController 和选择恰当的 methodNameResolver(如 InternalPathMetho

Spring MVC 中的基于注解的 Controller(转载)

  终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响应请求.实际上,ControllerClassNameHandlerMapping, MultiActionController 和选择恰当的 methodNameResolver(如 InternalPathMethodNameResolver) 就已经可以在很大程度上帮助我们省去不少的 XML 配置,

ASP.NET MVC中分析淘宝网页发生乱码标题搞定方法

ASP.NET MVC中分析淘宝网页发生乱码标题搞定方法 近来正在分析淘宝中商品的信息,效果发生乱码,如: 原因便是中文字符格式发生冲突,ASP.NET MVC 默认采用utf-8,可是淘宝网页采用gbk.正在网上找了一下,最常常的搞定方法便是修改web.config:< system.web> ...... < globalization requestEncoding="gbk" responseEncoding="gbk" culture=&

在ASP.NET MVC 中获取当前URL、controller、action 、参数

URL的获取很简单,ASP.NET通用:[1]获取 完整url (协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取 虚拟目录名+页面名+参数: string url=Request.RawUrl;(或 string url=Request.Url.PathAndQuery;) [3]获取 虚拟目录名+页面名:string url=HttpContext.Current.Request.Url.AbsolutePath;(或

MVC中利用ViewBag传递Json数据时的前端处理方法

用viewBag传递Json字符串到前端时,json字符串中的“会被转义为& quot,前端处理方法为@Html.Raw(Json.Encode(ViewBag.Data)),再用eval()函数解析得到json对象:var data=eval("(" + @Html.Raw(Json.Encode(ViewBag.Data)) + “)”); 如何传递的是json对象则前端使用用 jsonData=eval( @Html.Raw(ViewBag.jsonData)); 原文地

在ASP.NET MVC 中获取当前URL、controller、action

一.URL的获取很简单,ASP.NET通用: [1]获取 完整url (协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取 虚拟目录名+页面名+参数: string url=Request.RawUrl; (或 string url=Request.Url.PathAndQuery;) [3]获取 虚拟目录名+页面名: string url=HttpContext.Current.Request.Url.AbsolutePa

在ASP.NET MVC 中获取当前URL、controller、action(转)

原博:http://www.cnblogs.com/zgqys1980/archive/2012/08/01/2618152.html URL的获取很简单,ASP.NET通用:[1]获取 完整url (协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取 虚拟目录名+页面名+参数: string url=Request.RawUrl;(或 string url=Request.Url.PathAndQuery;) [3]获取 

MVC中Json的使用:Controller中Json的处理

一.当查询得到的数据符合前台要求,不需要做任何处理,直接DataList To Json 返回前台. 代码: 1 var allEntities = service.QueryByPage(this.GetSearchFilter(searchModel), "InsertedDateUtc Descending", pageSize, searchModel.PageIndex + 1, out recordCount); 2 return Json(allEntities, Jso

ASP.NET MVC中如何以ajax的方式在View和Action中传递数据

前言:写这篇随笔的时候,在url上漏写了斜线,找了好久错误,整个人都很不好.#我是猪系列 背景:之前介绍过一篇如何构建ASP.NET MVC4&JQuery&AJax&JSon示例,这一篇单独讲解如何在View和Action间传递并处理数据. 1,前台HTML代码: 1 <div> 2 <button type="button" id="btn">从视图向控制器中传递数据</button> 3 <p