3

我有参数要发送

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

但是,pName1 = "pValue1", ...控制器会附带 ViewBag。ViewBag 封装的对象类型应该是什么,如何将路由值设置为 Html.Action?

4

1 回答 1

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,而无需在路由值中传递它们。

这回答了你的问题了吗?

于 2013-05-12T01:17:27.993 回答