将JavaScript变量传递给jQuery DataTable中的razor函数
我在razor c中定义了一个函数Convertstring名称 接下来,我有一个jquery数据表,它由第一行上的超链接组成。问题是我需要在jquery数据表中调用这个C函数将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
"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) + '">';
}