MVC中Controller間的傳值、Controller到View的傳值方法

來源:互聯網
上載者:User

標籤:傳值

              從做了考試以來,和別人也進行了交流,發現系統內部的傳值算是一個比較費勁的問題。這篇部落格講解兩種傳值的情況——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,從頁面的隱藏欄位獲得
        

        總結:這裡的傳值總的來說是比較麻煩的,目前還沒找到更好的方法,大家如果有好的建議歡迎留言~~這些方法都是需要大量尋找和總結的,再加上平時的多交流和積累。

        傳值本身其實並不難,比較困難的是傳值的技巧性和創新性,在哪傳,用什麼方式是一個很考驗程式員思考靈活性的問題。

        

       

      

MVC中Controller間的傳值、Controller到View的傳值方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.