跟互聯力量學Asp.net MVC3-傳值

本節重點說明如何將控制器中的數據傳遞給視圖的問題。如果對之前的內容不清楚,請參考《跟互聯力量學asp.net mvc-視圖和頁面模板

在我們使用數據庫並介紹模型之前,首先我們介紹一下如何將控制器中的信息傳遞給視圖。 瀏覽器接收到一個URL請求後,將會調用控制器類來進行響應。你可以在控制器類中進行對接收到的頁面參數進行處理的代碼,你可以在控制器類中書寫從數據庫中獲取數據的代碼,你也可以在控制器類中書寫代碼來決定返回給客戶端什麼格式的響應文件。控制器可以利用視圖模板文件來生成HTML格式的響應文件並顯示在瀏覽器中。

控制器類負責提供視圖模板文件在生成HTML格式的響應文件時所需要的任何數據或對象。一個視圖模板文件不應該執行任何業務邏輯,也不應該直接和數據庫進行交互。它只能和控制器類進行交互,獲取控制器類所提供給它的數據,這樣可以使你的代碼更加清晰,容易維護。

現在在我們的應用程序中,HelloWorldController控制器類中的Welcome方法帶有兩個參數—name與numTimes,Welcome方法直接向瀏覽器輸出這兩個參數的參數值。這裏,我們修改該方法使其不再直接輸出數據,而是使用一個視圖模板。該視圖模板將生成一個動態的響應流,這意味着我們需要將數據從控制器類傳遞給視圖以便利用該數據來生成該響應流。我們在該控制器類中將視圖模板所需要的數據送入一個ViewBag對象中,該對象可以被視圖模板直接接收。

打開HelloWorldController.cs文件,修改Welcome方法,在該方法中爲ViewBag對象添加一個Message屬性與NumTimes屬性,並且將屬性值分別設定爲經過處理後的name參數值與numTimes參數值。ViewBag對象是一個動態對象,你可以爲它添加任何屬性並賦上屬性值。在未賦值之前該屬性是不生效的,直到你賦值爲止。修改後的HelloWorldController.cs文件中的代碼如代碼清單3-4所示。

代碼清單3-4 修改後的HelloWorldController.cs文件

clip_image002

現在ViewBag對象中已經包含了數據,它將被自動傳遞給視圖。

接下來,我們需要創建一個Welcome視圖模板。在“調試”菜單中,點擊“生成 MvcBooks”將應用程序進行編譯。

接下來,在Welcome方法中點擊鼠標右鍵,然後點擊“添加視圖”,在該對話框中不做任何修改,直接點擊添加按鈕, View文件夾下的HelloWorld文件假種自動被創建了一個Welcome.cshtml文件,打開該文件,在<h2>元素下添加代碼,讓瀏覽器顯示URL地址中傳入的name參數中設定的文字,顯示次數等於URL地址中傳入的numTimes參數中設定的次數。修改後的Welcome.cshtml文件中的代碼如代碼清單3-5所示。

代碼清單3-5 修改後的Welcome.cshtml文件

clip_image004

運行應用程序,並且在地址欄中輸入“http://localhost:xx/HelloWorld/Welcome?name=foxitjob.com&numtimes=4”,該地址欄中的頁面參數將會自動傳遞給控制器。控制器將會把這些參數值放入ViewBag對象中並且傳遞給視圖。視圖再在瀏覽器中顯示這些數據。

視圖中顯示從控制器類中傳遞過來的數據

這裏,我們使用了模型“M”的一種方式,但是不是數據庫的方式。在下一節中,我們將創建一個數據庫,並且介紹如何對該數據庫中的數據進行處理。

互聯力量武漢電子商務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章