【问题标题】:How to pass a jquery variable as an argument in C# function如何在 C# 函数中将 jquery 变量作为参数传递
【发布时间】:2017-01-13 10:18:07
【问题描述】:

在下面的代码中,我试图将 jqgrid 的单元格值作为参数传递给 c# 函数,但它显示错误...

【问题讨论】:

  • 你能从cellvalue的变量声明中更新代码
  • @CustomUrlHelper() 是剃须刀代码,在发送到视图之前在服务器上进行评估。那时您的 javascript 变量不存在。您尚未说明该函数的作用,但一种选择是使用“虚拟”值代替 cellvalue 来生成其输出,然后使用 javascript 将虚拟值替换为变量的值。
  • 该函数加密查询字符串变量的值并生成加密摘要。斯蒂芬·穆克。
  • 请不要发布代码图片,而是自己编写代码。这使其 1. 更易于阅读,2. 更易于在 Internet 上搜索。
  • 我认为自定义格式化程序(formatter 回调函数)的作用存在误解。为什么id 应该加密?如果您确实需要对其进行加密,那么您应该在服务器端执行此操作,id 值将已被加密。您应该检查您的代码,该代码使用 jqGrid 的数据生成服务器响应。如果确实需要加密,您可以在该位置包含加密。

标签: c# jquery asp.net-mvc jqgrid


【解决方案1】:

不幸的是,它不像将 JQuery 值作为参数传递给 C# 函数那么简单。

理由:

  1. JQuery 在客户端机器上运行
  2. 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) {
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 2016-06-07
    • 2014-08-18
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    相关资源
    最近更新 更多