【发布时间】:2014-05-23 07:25:08
【问题描述】:
如何将数组参数发送到操作方法?
如何创建数组变量? 部分视图.page
我试过了,但是没用。
@{ Html.RenderAction("GetDefinationType", "Crew", new { category = "Competency","crew",Person" }); }
谢谢
【问题讨论】:
标签: asp.net-mvc razor model-view-controller
如何将数组参数发送到操作方法?
如何创建数组变量? 部分视图.page
我试过了,但是没用。
@{ Html.RenderAction("GetDefinationType", "Crew", new { category = "Competency","crew",Person" }); }
谢谢
【问题讨论】:
标签: asp.net-mvc razor model-view-controller
您可以在 View 中这样做:
@{
var temp = new[] { "Competency", "crew", "Person" };
}
@Html.Action("GetDefinationType", "Crew",new{category =temp })
行动:
public ActionResult GetDefinationType(string[] category)
{
return Content("");
}
【讨论】:
在GetDefinationType 方法中,您必须让它接受名称为CategoryOptions 的参数,这将是您要传递的类(参数)。
public class CategoryOptions
{
string[] myArray { get; set; }
}
这是如何调用和使用它:
@{ Html.RenderAction("GetDefinationType", "Crew", new { category = new CategoryOptions { myArray = new string [] {"Competency","crew","Person"}} }); }
【讨论】:
其他两个答案几乎是正确的,但过于复杂。
如果你想传递一个字符串数组作为参数,只需传递一个匿名类型的字符串数组作为你命名的category参数:
@{Html.RenderAction("GetDefinationType", "Crew", new { category = new [] {"Competency","crew","Person"} });}
注意:RenderAction 用于代码块(正如您添加的那样),但您可以将更简单的@Html.Action 用于内联 Razor 代码:
@Html.Action("GetDefinationType", "Crew", new { category = new [] {"Competency","crew","Person"} })
在任何一种情况下,控制器操作方法只需要接受一个名为 category 的参数,其类型为 string[]。
例如
public ActionRresult GetDefinationType(string[] category)
{
// do something with the list of categories
}
另外,除非你指的是defamation 和definition 的俚语组合,“defanation”请拼写为definition :)
【讨论】: