我有像
一样发送的参数 @Html.Action("actionName", "controlName", new{ pName1 = "pValue1", ... })
但是,pName1 = "pValue1", ...
将来自控制器的ViewBag。应该用ViewBag封装的对象类型,以及如何将路由值设置为Html.Action?
答案 0 :(得分: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,而无需在路由值中传递它们。
这会回答你的问题吗?