我正在制作一个Web API应用程序,它将数据填充到数据网格中。当前,我想要一个按钮,该按钮将使用附加参数调用我的webapi端点。
我的数据网格,按钮代码在下面。这是我剃刀页面代码的全部:
@(Html.DevExtreme().DataGrid<Batch>().ID("gridContainer")
.Columns(columns =>
{
columns.Add().CellTemplate(
@<text>
@(Html.DevExtreme().Button()
.ID("sendButton")
.Text("Select Batch")
.OnClick("function () { onItemClick(data); }"))
</text>);
columns.AddFor(m => m.BatchId).Caption("BatchId");
columns.AddFor(m => m.CobId).Caption("Cob Id");
})
.DataSource(d => d.WebApi().Controller("Batches").LoadAction("GetAllEntries").Key("BatchId"))
)
<script>
var idValue;
function onItemClick(data)
{
DevExpress.ui.notify(data.Id);
console.log(data.BatchId);
idValue = data.BatchId;
window.location.href = '@Url.Action("SeanTest", "BatchDatagrid", new {@id = idValue })';
}
</script>
在我的脚本中,变量idValue
包含要传递到URL中的值,但是当我尝试将其放入Url.Action时,它告诉我it doesn't exist in the current context
将idValue
传递到重定向操作中的最佳方法是什么?
答案 0 :(得分:1)
@ Url.Action在服务器端处理。因此,不可能将动态值从客户端传递给它。但是,作为解决方法,您可以使用以下代码
window.location.href = '@Url.Action("SeanTest", "BatchDatagrid", new {@id = "ID"})'.replace("ID",idValue );
如果您愿意,应该将原始海报here
归功于此