gpt4 book ai didi

javascript - 将 JavaScript 变量传递给 jQuery DataTable 中的 razor 函数

转载 作者:行者123 更新时间:2023-12-03 01:26:56 30 4
gpt4 key购买 nike

我有一个在 razor c# 中定义的函数 Convert(string name)

接下来,我有一个 jquery 数据表,其中第一行包含一个超链接。问题是我需要在 jquery 数据表中调用这个 C# 函数。

"render": function (data, type, row, meta) {
return '<a href="/Home/Detail?search=' + row.Id + '">'

我想在 jquery 数据表中调用此 C# Convert(string name) 函数,如下所示:

 "render": function (data, type, row, meta) {
return '<a href="/Home/Detail?search=' + @Check(row.Id) + '">

但它没有按预期工作。有人可以帮忙吗?

最佳答案

当然,您不能像这样将客户端变量直接传递给服务器端方法:

"render": function (data, type, row, meta) {
return '<a href="/Home/Detail?search=' + @Check(row.Id) + '">'
}

其背后的原因是因为所有服务器端代码都会在页面加载后立即执行,之后只保留客户端脚本。您需要使用 JsonResult 或 Web API 方法并创建一个 JS 函数,以使用 jQuery.ajax() 进行 AJAX 回调(使用 GETPOST 方法(具体取决于您的选择)并返回转换结果。

以下是两种方式的示例:

1) 使用 AJAX 回调和 JsonResult

JS

function check(rowId) {
var rid = { name: rowId };
$.post('@Url.Action("Convert", "ControllerName")', rid).done(function (result) {
// do something
return result;
}).fail(function (jqxhr, textStatus, err) {
// error handling
});
}

Controller

[HttpPost]
public JsonResult Convert(string name)
{
// do something

return Json(result);
}

2) 通过 Web API 使用 AJAX 回调(即 ApiController)

JS

function check(rowId) {
var rid = { name: rowId };
$.post('api/Convert', rid).done(function (result) {
// do something
return result;
}).fail(function (jqxhr, textStatus, err) {
// error handling
});
}

Web API Controller

[HttpPost]
public IHttpActionResult Convert(string name)
{
// do something

return new JsonResult<string>(result);
}

两种方法在render部分具有相同的实现,只需调用check函数并传递row.Id作为参数:

数据表

"render": function (data, type, row, meta) {
return '<a href="/Home/Detail?search=' + check(row.Id) + '">';
}

注意:上面基于 JS 的 check 函数应在 DataTable 定义之外声明。

关于javascript - 将 JavaScript 变量传递给 jQuery DataTable 中的 razor 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51490495/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com