如何在 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 中将两个匿名函数作为参数传递?

在 C# 中将 lambda 函数作为命名参数传递

如何在 Java 中将类型作为方法参数传递

如何将参数传递给 jQuery document.ready() 函数(ASP.NET MVC、C#)

在函数c ++中将变量作为默认参数传递[重复]

如何将AngularJs变量作为jQuery函数中的参数传递?