淺談MVC頁面之間參數傳遞

關於MVC頁面之間的傳值,有多種方式,下面,咱們就Html.RenderAction 方式 和 Html.RenderPartial 方式 來給你們分享一下有什麼不一樣。前端

1、Html.RenderAction 方式頁面之間傳遞參數的方式:測試

Html.RenderAction 方式 是訪問的另外一頁面的Controller,並將參數傳入另外一頁面的Controller中相應的Action中的參數中。spa

例如:我有這麼一個Controller和Action(是一個部分視圖的)code

1     public class TopController : Controller
2     {
3         // GET: Top
4         public ActionResult Index(string content)
5         {
6             ViewBag.content = content;
7             return PartialView();
8         }
9     }

這個Index中,將接到的參數寫到ViewBag.content中,一面前端View界面中取到。以下:對象

那麼咱們如何利用Html.RenderAction方式,將參數傳入到這個頁面而後展現出來呢?blog

這就是利用Html.RenderAction方式,傳遞參數給Top 中的 Index 頁的。get

你們學會了嘛?string

2、Html.RenderPartial 方式io

Html.RenderPartial 方式 與 Html.RenderAction 不一樣,他沒有將參數傳遞到另外一頁面的Controller對應的Action,而是直接傳遞到另外一界面的Model中。class

因此,Html.RenderPartial傳值不會通過Controller直接進入Model。

下面咱們來看一下具體的操做。

一、首先咱們簡歷一個簡單的Model模型。

1     public class Person
2     {
3         public string Name { get; set; }
4         public string Sex { get; set; }
5      
6     }

二、創建界面Boot頁,(Boot本身取的名字) 其 View以下:

上面代碼中,咱們將頁面的model制定未Person類。在兩個<h2>標籤中根據類的屬性去取相應的值。

創建完這個頁面,咱們就要向這個頁面傳值了,那麼如何用 Html.RenderPartial 向其中傳值呢? 以下:

上述紅框中即爲用 Html.RenderPartial 方式傳值。

這種方式彷佛還有不足的地方,是的,咱們不可能每次用Html.RenderPartial方式傳值的時候,都要去創建一個Model模型,這樣的話幾乎是場災難。那麼如何避免呢?

咱們用Html.RenderPartial方式向另外一界面傳值的理想方式或許是這樣的:

如上面紅框中所示。直接用一個匿名對象將參數包進去,而後傳遞過去就行,可是,另外一個頁面是否會接受到呢?

或許,你們早已經測試過了,答案是:不能夠。在Model中去Name和Sex,會報錯的(相信各位園友們早已實驗過了)

那麼咱們如何改進,能讓這個頁面能夠接受到這種方式的參數傳遞呢?以下:

上述方式去取值,就會取到傳遞過來的匿名對象的相應屬性了。是否是很high啊,之後傳值就方便多了。

傳遞的參數的類型也能夠是多種多樣,例如:

咱們加了一個DateTime類型的參數,那麼另外一界面仍是同樣,照接不誤。

 頁面

好了,關於MVC頁面之間參數傳遞,就分享到這裏了。

相關文章
相關標籤/搜索