Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JavaScript变量传递给jQuery DataTable中的razor函数_Javascript_C#_Jquery_Asp.net Mvc - Fatal编程技术网

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

将JavaScript变量传递给jQuery DataTable中的razor函数,javascript,c#,jquery,asp.net-mvc,Javascript,C#,Jquery,Asp.net Mvc,我在razor c中定义了一个函数Convertstring名称 接下来,我有一个jquery数据表,它由第一行上的超链接组成。问题是我需要在jquery数据表中调用这个C函数 "render": function (data, type, row, meta) { return '<a href="/Home/Detail?search=' + row.Id + '">' 但它并没有像预期的那样工作。有人能帮忙吗 如果该方法可以在j

我在razor c中定义了一个函数Convertstring名称

接下来,我有一个jquery数据表,它由第一行上的超链接组成。问题是我需要在jquery数据表中调用这个C函数

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

但它并没有像预期的那样工作。有人能帮忙吗

如果该方法可以在javascript上轻松实现,那么就使用javascript,否则您需要在控制器端创建WebMethod,以便像这样从javascript调用C方法

[WebMethod]                                 
public static void Convert(string name)
{
//Your Logic
 }
 $.ajax({
     type: "POST",
     url: 'Yourcontrollername/Convert',
     data: {name="somename"},
     contentType: "application/json; charset=utf-8",
     dataType: "json",
     success: function (msg) {
        //do something with result
     },
     error: function (e) {
        alert("Something Wrong.");
     }
 });
然后像这样调用内部脚本

[WebMethod]                                 
public static void Convert(string name)
{
//Your Logic
 }
 $.ajax({
     type: "POST",
     url: 'Yourcontrollername/Convert',
     data: {name="somename"},
     contentType: "application/json; charset=utf-8",
     dataType: "json",
     success: function (msg) {
        //do something with result
     },
     error: function (e) {
        alert("Something Wrong.");
     }
 });

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

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

2通过Web API使用AJAX回调,即ApicController

JS

Web API控制器


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

您不能这样混合使用服务器端和客户端代码。能否提供字符串名称/检查内容?如果您只想将字符串转换为另一种类型,请使用默认的JS转换函数。这是一个执行加密的长c代码。是否有其他方法可以加密row.Id?您的c razor代码在服务器上执行,在客户端上不可用。您需要通过web API方法公开您的函数,并在客户端上调用它。有几种方法可以在呈现datatable列之前异步执行HTTP请求-搜索ajax呈现datatable以获取更多信息。我刚刚阅读了您的消息-为什么要加密行ID?除非您是指URL编码,因为您将其作为搜索参数传递。在JavaScript.Yes中搜索URL编码。我正在对row.Id进行编码,因为我正在通过URL传递它。加密是通过C代码执行的。但是我无法在jQuery数据表中调用c代码。
[HttpPost]
public JsonResult Convert(string name)
{
    // do something

    return Json(result);
}
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
    });
}
[HttpPost]
public IHttpActionResult Convert(string name) 
{
    // do something

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