2013-05-11 48 views
3

我有參數發送類似如何動態地將多個參數傳遞到Html.Action中的ASP.NET MVC

@Html.Action("actionName", "controlName", new{ pName1 = "pValue1", ... })

但是,pName1 = "pValue1", ...將拿出ViewBag從控制器。應該用ViewBag封裝什麼類型的對象,以及如何將路由值設置爲Html.Action?

+0

目前尚不清楚你在做什麼。你是否試圖在ViewBag中存儲路由值中存儲的一些數據? – 2013-05-12 00:14:47

+0

是的。正如你所理解的。 – serefbilge 2013-05-12 00:53:04

+0

做你自己的忙,避免查看袋。視圖袋是偉大的,但它是快速和骯髒的答案。我強烈建議使用定義的模型對象來存儲控制器傳遞到視圖中的信息。 @model someclass 強類型化視圖比依賴視圖包的視圖更容易維護。 – jcwmoore 2013-05-12 02:41:14

回答

5

對象的類型可以是任何你喜歡的基本類型,例如int,string等...到自定義對象。

如果你有一個值分配給ViewBag如:

public class CustomType { 
    public int IntVal { get; set; } 
    public string StrVal { get; set; } 
} 
... 
ViewBag.SomeObject = new CustomType { IntVal = 5, StrVal = "Hello" } 

你可以調用它簡稱爲:

@Html.Action("SomeAction", "SomeController", new { myParam = @ViewBag.SomeObject }) 

而在你的控制器:

public ActionResult SomeAction(CustomType myParam) { 
    var intVal = myParam.IntVal; 
    var strVal = myParam.StrVal; 
    ... 
} 

然而,請注意,您仍然可以從控制器內訪問ViewBag,而不必將其傳遞到路由值中。

這是回答您的問題嗎?

+0

它是可用的,我更喜歡將它與Dictionary 類型一起使用,因爲使用字符串數據名稱(鍵)可以很容易地訪問,而無需進一步定義。所以一票給你。謝謝。 – serefbilge 2013-05-12 09:32:31

相關問題