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

标签 javascript c# jquery asp.net-mvc

我有一个在 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/

相关文章:

javascript - 如何使用 React 创建多页面应用程序

c# - 通过 SSL 连接到 SQL Server 并获取服务器证书

javascript - 如何使用 javascript 查找并替换某些关键字之间的文本?

javascript - 当标记位于打开的信息框后面时 - 使用 InfoBox 插件 Google Maps API v3 事件鼠标悬停

php - Javascript 字符串长度与 PHP mb_strlen 不同

javascript - 在 react-native 中通过 PUT 方法上传文件

javascript - 如何禁用提交按钮,直到密码字段在 Javascript 中匹配?

c# - 将 NetworkCredentials 转换为 PSCredentials?

c# - 如何判断浮点除法的结果是否应该是整数?

javascript - 如何在没有 DIV 的情况下隐藏 <body>?