使用MVC网格并从网格数据创建动作链接

时间:2013-12-03 19:02:19

标签: c# asp.net

我有一个正在使用的网格,其中我想将一列链接到另一个屏幕。我想这样做,以便当用户点击网格中的链接时,它们将被导航到详细信息屏幕。

目前我所拥有的是:

@grid.GetHtml(tableStyle:"listing-border",headerStyle:"gridhead",footerStyle:"paging",rowStyle:"td-dark",alternatingRowStyle:"td-light",
                            columns: 
                                grid.Columns(
                                    grid.Column("BatchNumber", "Batch Number", format: (item) => Html.ActionLink(((string)item.BatchNumber), "BatchDetails", "Batching", new { id = (string)item.BatchNumber })),
                                    grid.Column("BatchGroupItemDate", "Date"),
                                    grid.Column("BatchComment", "Comment"),
                                    grid.Column("NumberOfDocuments", "Number of Documents"),
                                    grid.Column("TotalTransfered", "Total Transfered"),
                                    grid.Column("NotTransfered", "Not Transfered")
                                ),mode:WebGridPagerModes.All)

批处理编号在我的视图中是可单击的,并且实际上会触发关联的控制器方法,但是传入的id值为null。这是因为它无法记住网格客户端那个位置的内容吗?

1 个答案:

答案 0 :(得分:0)

我上面有什么

grid.Column("BatchNumber", "Batch Number", format: (item) => Html.ActionLink(((string)item.BatchNumber), "BatchDetails", "Batching", new { id = (string)item.BatchNumber }))

不正确,特定的重载是将id作为html参数,这解释了我得到的奇怪字符串。

这是正确的:

grid.Column("BatchNumber", "Batch Number", format: (item) => Html.ActionLink(((string)item.BatchNumber), "BatchDetails", "Batching", new { id = (string)item.BatchNumber }, null))

这里的“null”将html参数重载为null并让id正确传递。