MVC中Controller间的传值、Controller到View的传值方法
2015-01-30 21:20
423 查看
从做了考试以来,和别人也进行了交流,发现系统内部的传值算是一个比较费劲的问题。这篇博客讲解两种传值的情况——MVC中Controller间的传值,这里包括了第二种Controller到View的传值。
示例:我有两个Controller:C1和C2,我想把C1中的课程实体的课程ID传到C2中。方案是先把C1中的课程ID传到C2对应的View页面的地址栏中,然后C2从自己的View页面中获取。
来看代码:
下面看看C2怎么获取自己View页面地址栏的CourseId,这里可谓是一波三折了。
1、首先在C2默认Action中获取它的值:
先获取CourseID的值,然后通过data发送到后台Controller中。
4、最后C2获取CourseID
总结:这里的传值总的来说是比较麻烦的,目前还没找到更好的方法,大家如果有好的建议欢迎留言~~这些方法都是需要大量查找和总结的,再加上平时的多交流和积累。
传值本身其实并不难,比较困难的是传值的技巧性和创新性,在哪传,用什么方式是一个很考验程序员思考灵活性的问题。
示例:我有两个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/QueryQuestionTypeByCourse?Id=@ViewData["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,从页面的隐藏字段获得
总结:这里的传值总的来说是比较麻烦的,目前还没找到更好的方法,大家如果有好的建议欢迎留言~~这些方法都是需要大量查找和总结的,再加上平时的多交流和积累。
传值本身其实并不难,比较困难的是传值的技巧性和创新性,在哪传,用什么方式是一个很考验程序员思考灵活性的问题。
相关文章推荐
- MVC从Controller到view进行传值的方法
- MVC中Controller与View中间的数据传递的常用方法
- MVC从Controller到view进行传值的两种方法
- ASP.NET MVC中Controller与View之间的数据传递总结
- Asp.net Mvc 未能加载类型“System.Web.Mvc.ViewPage<IEnumerable...的解決方法
- MVC(Model View Controller)模型-视图-控制器
- Asp.net Mvc Framework 三 (Controller与View)
- ASP.NET Model View Controller (MVC) Framework
- ASP.NET MVC学习笔记-Controller与View传值
- ASP.NET MVC 重点教程一周年版 第三回 Controller与View
- ASP.NET MVC 重点教程一周年版 第三回 Controller与View 推荐
- Pro ASP.NET MVC - [3]Prerequisites(前提) - [1]Understanding Model-View-Controller
- MVC(Model/View/Controller)--EasyJF学习
- ASP.net MVC 同一view或页面使用多个Model或数据集的方法
- MVC进阶学习--View和Controller之间的数据传递(一)
- 关于MVC从View向Controller传值的问题
- Asp.net Mvc Framework 九 (View与Controller交互)
- Asp.net Mvc Framework 九 (View与Controller交互)
- Applications Programming in Smalltalk-80(TM):How to use Model-View-Controller (MVC)
- ASP.NET MVC 重点教程一周年版 第三回 Controller与View 【转】