因为点击该行发生在浏览器上,所以您不能依赖控制器或模型中的任何内容,除非它已经在您的原始模型中的某个位置。我通过将隐藏的 Id 列添加到网格和用于渲染的模型来实现这一点,然后将客户端事件和处理程序添加到网格和视图中。查看客户端事件下为网格提供的示例,了解您可以利用的一些不同客户端事件。
在您的网格上,首先添加 Id 列(如果您愿意,可以隐藏):
.Columns(columns =>
{
columns.Bound(o => o.Id).Hidden(true);
}
然后添加 ClientEvents 并连接 onRowSelect,如下所示:
.ClientEvents(events =>
{
events.OnRowSelect("onRowSelected");
}
然后添加一个函数来处理这个事件,如下所示:
function onRowSelected(e) {
var id = e.row.cells[0].innerHTML;
window.location = "Something/Details/" + id;
}
更新
听起来你在客户端上做的一切都是正确的。问题可能出在其他地方,在您的操作或绑定中。但可以肯定的是,在冒险走这条路之前,先看看/Pedido/DetalhePedido/" + id实际上是什么警报。您应该能够接受它并将其直接输入到浏览器的 url 中并点击您的操作只要正确定义了您的操作,就可以接受一个名为 id 的 int。
如果它仍然是一个问题,你需要看看你的行动。是否标记为 Post?如果是 Window.Location 将不起作用,因为它不是帖子。它接受的参数是名为 Id 且类型为 int 的参数吗?如果不是,应该是吗?您是否更改了路线,如果是,您的 Url 是否与定义的任何路线匹配?