您好我有一个包含两列的WebGrid:
1-名称
2-Action绑定到另一个控制器动作。点击我会 重定向到该操作,参数应该是List<Test>
的列表 项目
输出: 请求转到Controller但参数是空的colelction,我错过了任何东西。
查看:
@model IEnumerable<Test>
<div id="testGrid">
@{
var grid = new WebGrid(ajaxUpdateContainerId: "testGrid", canSort: true);
grid.Bind(Model);
@MvcHtmlString.Create(
@grid.GetHtml(
columns: grid.Columns
(
grid.Column(Html.DisplayNameFor(model => model.Name).ToHtmlString(),
header: Html.DisplayNameFor(model => model.Name).ToHtmlString()),
grid.Column("Action", header: "Action", format: @<a href="@Url.Action("LoadTest", "NewController",
new
{
ingredients = Model.Select(t=>t.Id==@item.Id).ToList()
}
)" class="edit-btn"></a>)
)
).ToString()
)
}
</div>
控制器代码
列出空白。
public ActionResult LoadTest(List<Test> testItems)
{
//...test code.
}
答案 0 :(得分:0)
您的Url.Action正在创建一个与控制器预期不同的变量:
将您的行动从成分更改为testItems:
grid.Column("Action", header: "Action", format: @<a href="@Url.Action("LoadTest", "NewController",
new
{
testItems = Model.Select(t=>t.Id==@item.Id).ToList()
}
或更改您的控制器以期望一个名为成分的参数:
public ActionResult LoadTest(List<Test> ingredients )
{
//...test code.
}
另外,您是否更新了Global.asax以期望这种类型的路由?此示例假设您将名称testItems
保留为参数。
routes.MapRoute(
"Test route", // Route name
"NewController/{action}/{testItems}", // URL with parameters
new { controller = "NewController", action = "LoadTest" } // Parameter defaults
);