我有參數發送類似如何動態地將多個參數傳遞到Html.Action中的ASP.NET MVC
@Html.Action("actionName", "controlName", new{ pName1 = "pValue1", ... })
但是,pName1 = "pValue1", ...
將拿出ViewBag從控制器。應該用ViewBag封裝什麼類型的對象,以及如何將路由值設置爲Html.Action?
我有參數發送類似如何動態地將多個參數傳遞到Html.Action中的ASP.NET MVC
@Html.Action("actionName", "controlName", new{ pName1 = "pValue1", ... })
但是,pName1 = "pValue1", ...
將拿出ViewBag從控制器。應該用ViewBag封裝什麼類型的對象,以及如何將路由值設置爲Html.Action?
對象的類型可以是任何你喜歡的基本類型,例如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,而不必將其傳遞到路由值中。
這是回答您的問題嗎?
它是可用的,我更喜歡將它與Dictionary
目前尚不清楚你在做什麼。你是否試圖在ViewBag中存儲路由值中存儲的一些數據? – 2013-05-12 00:14:47
是的。正如你所理解的。 – serefbilge 2013-05-12 00:53:04
做你自己的忙,避免查看袋。視圖袋是偉大的,但它是快速和骯髒的答案。我強烈建議使用定義的模型對象來存儲控制器傳遞到視圖中的信息。 @model someclass 強類型化視圖比依賴視圖包的視圖更容易維護。 – jcwmoore 2013-05-12 02:41:14