在Razor 快速說明教學之後,這一堂開始我們要進一步討論控制器與檢視的溝通。
控制器經常需要將資料傳遞檢視,由檢視進一步整合轉換成標準的 HTML 網頁內容,最後經由網路傳送至使用者瀏覽器。當控制器需要將資料傳遞至檢視的時候,有兩種基本的方式,分別是 1.ViewBag ,或是 2.將其包裝成動作方法參數,傳入送出的檢視檔案。

上述圖示說明其中的過程,View 方法的 parameter 為傳遞至檢視的參數,這必須是一個物件,考慮以下控制器的動作方法 OneMessage 內容:
OneMessage 動作方法中,設定 ViewBag.CompanyName 為一指定的訊息字串「康廷數位 …」,然後再傳入另外一個物件變數「message」進入 View 方法中。開啟對應的檢視檔案,配置如下內容:
一開始 @model 宣告為 object ,表示這個檢視頁會接受一個 object 型別的參數,也就是上述控制器於動作方法中,傳入 View 方法的參數型別,接下來在 body 元素中,以Razor 語法,分別指定 @ViewBag.CompanyName 與 @Model。前者 @ViewBag.CompanyName 取得控制器中指定的同名屬性值,而 @Model 則是傳入 View 的參數。

上圖說明 ViewBag 與 View 方法參數對應至檢視的關係,這裏要特別注意,控制器的動作方法中,傳入 View 的參數被視為模型物件,檢視中一開始的 @model表示宣告這個檢視頁面將接受的參數型別,以小寫字首 model 標示,而在頁面內容當中如果要引用模型取出其值,則需為大寫字首 Model 這會取出其值。

控制器經常需要將資料傳遞檢視,由檢視進一步整合轉換成標準的 HTML 網頁內容,最後經由網路傳送至使用者瀏覽器。當控制器需要將資料傳遞至檢視的時候,有兩種基本的方式,分別是 1.ViewBag ,或是 2.將其包裝成動作方法參數,傳入送出的檢視檔案。

上述圖示說明其中的過程,View 方法的 parameter 為傳遞至檢視的參數,這必須是一個物件,考慮以下控制器的動作方法 OneMessage 內容:
public ActionResult OneMessage() { ViewBag.CompanyName = "康廷數位|www.kangting.tw"; object message = "ASP.NET MVC 商業開發實務"; return View(message); }
OneMessage 動作方法中,設定 ViewBag.CompanyName 為一指定的訊息字串「康廷數位 …」,然後再傳入另外一個物件變數「message」進入 View 方法中。開啟對應的檢視檔案,配置如下內容:
@model object @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>OneMessage</title> </head> <body> <div> <p>@ViewBag.CompanyName</p> <p>@Model</p> </div> </body> </html>
一開始 @model 宣告為 object ,表示這個檢視頁會接受一個 object 型別的參數,也就是上述控制器於動作方法中,傳入 View 方法的參數型別,接下來在 body 元素中,以Razor 語法,分別指定 @ViewBag.CompanyName 與 @Model。前者 @ViewBag.CompanyName 取得控制器中指定的同名屬性值,而 @Model 則是傳入 View 的參數。

上圖說明 ViewBag 與 View 方法參數對應至檢視的關係,這裏要特別注意,控制器的動作方法中,傳入 View 的參數被視為模型物件,檢視中一開始的 @model表示宣告這個檢視頁面將接受的參數型別,以小寫字首 model 標示,而在頁面內容當中如果要引用模型取出其值,則需為大寫字首 Model 這會取出其值。

沒有留言:
張貼留言