如何在 C# 函数中将 jquery 变量作为参数传递
Posted
技术标签:
【中文标题】如何在 C# 函数中将 jquery 变量作为参数传递【英文标题】:How to pass a jquery variable as an argument in C# function 【发布时间】:2017-01-13 10:18:07 【问题描述】:在下面的代码中,我试图将 jqgrid 的单元格值作为参数传递给 c# 函数,但它显示错误...
【问题讨论】:
你能从cellvalue
的变量声明中更新代码
@CustomUrlHelper()
是剃须刀代码,在发送到视图之前在服务器上进行评估。那时您的 javascript 变量不存在。您尚未说明该函数的作用,但一种选择是使用“虚拟”值代替 cellvalue
来生成其输出,然后使用 javascript 将虚拟值替换为变量的值。
该函数加密查询字符串变量的值并生成加密摘要。斯蒂芬·穆克。
请不要发布代码图片,而是自己编写代码。这使其 1. 更易于阅读,2. 更易于在 Internet 上搜索。
我认为自定义格式化程序(formatter
回调函数)的作用存在误解。为什么id
应该加密?如果您确实需要对其进行加密,那么您应该在服务器端执行此操作,id
值将已被加密。您应该检查您的代码,该代码使用 jqGrid 的数据生成服务器响应。如果确实需要加密,您可以在该位置包含加密。
【参考方案1】:
不幸的是,它不像将 JQuery 值作为参数传递给 C# 函数那么简单。
理由:
-
JQuery 在客户端机器上运行
C# 在您的 Web 服务器上运行(当您
在这里使用 ASP.NET)
为了将参数传递给您的服务器,您需要使用 REST 或 SOAP 消息传递来实现一些 API 调用。
如果您不打算使用 MVC/WebAPI/WCF,您还可以查看旧 ASP.NET(非 MVC)项目的 runat='server' 标记。
【讨论】:
没关系。我正在使用它来加密查询字符串,所以还有其他方法来保护查询字符串。 加密查询字符串的目的是什么?如果您不想要 MITM 攻击,那是 SSL/TLS 的工作。如果您不希望最终用户看到您的查询字符串,您可以使用 jquery.ajax 方法来调用您的服务器方法。【参考方案2】:我们不能直接在服务器端c#函数中传递jquery变量,但我们可以使用另一种方法,即调用另一个jquery方法,第二种方法使用jquery调用服务器端方法,ajax调用和ajax 方法成功后返回所需的输出字符串。
name: 'Id', index: 'Id',
formatter: function (cellvalue, options, rowObject)
var URLdata = "";
debugger;
BindTemperProofURL('@Url.Action("AddEventAttendee", "CampaignSchedule")', '', "Id=" + rowObject["Id"], function (data) URLdata = data; )
return '<a href="' + URLdata + '" style="width:75px; "class="jqgridlink">' + rowObject["Id"] + '</a>';
,
function BindTemperProofURL(url, nonTamperProofParams, tamperProofParams, callback)
var SecureURL = "";
debugger;
$.ajax(
type: 'POST',
url: '@Url.Action("SecureURL", "Base", new area = string.Empty , null)', // we are calling json method
dataType: 'json',
data: url: url, nonTamperProofParams: nonTamperProofParams, tamperProofParams: tamperProofParams ,
success: function (data)
callback(data);
,
async: false,
error: function (ex)
);
【讨论】:
以上是关于如何在 C# 函数中将 jquery 变量作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章
如何在 CoffeeScript 中将两个匿名函数作为参数传递?