【问题标题】:define a long array in jquery click function在 jquery click 函数中定义一个长数组
【发布时间】:2016-11-21 08:43:50
【问题描述】:

我在服务器端代码上有以下长类型会话

long[] grouparray = ..;

Session["grouplist"] = grouparray;

现在我正在尝试在 View Page 的 jquery 点击功能上获取此会话

$("#gpline").click(function () {

    parseInt(@Session["grouplist"]);
    var grouplistvalues = Session["grouplist"];

    alert(grouplistvalues);

});

但是,一旦我使用 firebug 进行调试,就会出现错误

SyntaxError: 预期的表达式,得到 ']'

parseInt(System.Int64[]);

【问题讨论】:

  • 您似乎对客户端和服务器端代码之间的分离感到困惑。您需要以预期的方式将服务器端代码输出到客户端。调用服务器端构造,例如 Session 是行不通的。
  • @RoryMcCrossan 这看起来像 MVC 剃刀语法,如果是这样,那么服务器端代码可以在视图中使用。
  • 是的,但是你需要在它前面加上@,即使这样你也需要序列化long的数组以便JS可以理解它
  • @kez 你的视图是asp.net mvc razor 页面吗?
  • @RoryMcCrossan 是的,没错..

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


【解决方案1】:

您需要在您的 c# 数据上使用 Json.Encode@Html.Raw 以使其与您的脚本兼容。

试试这个。

$("#gpline").click(function () {

    var grouplistvalues = @Html.Raw(Json.Encode(Session["grouplist"])); // converting the session data into array of numbers in javascript variable

    alert(JSON.stringify(grouplistvalues)); // stringify is used only to test.

});

【讨论】:

  • :) 如果它解决了问题,您可以将其标记为答案。 @kez
  • 系统需要再停留5分钟才能接受:D
  • @kez 我可以等待 :) 编码愉快!!
  • 如果我想将这个grouplistvalues 分配给一个Session["grouplist"] 怎么做我可以这样做@Html.Raw(Json.Encode(Session["grouplist"])) = grouplistvalues
  • @kez 不,你不能。让我解释一下幕后工作流程。当您点击控制器并返回视图时,实际发生的是服务器将获取视图,附加母版页,将 .cshtml 页面中的所有 c# 变量转换为其实际值,最后为您提供一个完整的 HTML 页面。来自<!DOCTYPE><html><head></head><body></body></html>。所以这意味着来自服务器的响应将是纯 HTML 和写在记事本中一样好。所以上面的解决方案可以工作,因为代码会变成var grouplistvalues = [12,3456,1321,13213,...]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多