如何动态地将多个参数传递到Html.Action中的ASP.NET MVC

如何动态地将多个参数传递到Html.Action中的ASP.NET MVC

问题描述:

我有参数发送类似如何动态地将多个参数传递到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

对象的类型可以是任何你喜欢的基本类型,例如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