【问题标题】:Javascript mixed with C# - unable to use variablesJavascript 与 C# 混合 - 无法使用变量
【发布时间】:2015-12-16 11:17:29
【问题描述】:

我有一个 JS 函数,我想循环从控制器传递的 c# 对象。然后我想将它与 HTML 输入值进行比较——我已将其作为字符串传递给 JS 函数。 函数被称为

searchReleases($("[name=release]").val());


function searchReleases(givenName) {
    var list;
    var data = givenName;
    @foreach (var a in @Model.Releases) {
        if (@a.Name.Contains(givenName)) {
           list+= a.Name + "=";
        }
    }
}

但是我无法在 IF 语句中访问 JS 变量 givenName。 我花了一段时间试图在谷歌上找到答案,但还没有找到可行的解决方案。

【问题讨论】:

  • 在编译时 JavaScript 不执行。 C# 代码在服务器端执行,JS 代码在客户端执行。
  • @foreach 是剃须刀代码,它在发送到客户端之前在服务器上执行。 var list 是客户端 javascript 变量,此时不存在。

标签: javascript c# variables model-view-controller


【解决方案1】:

你应该明白C#是服务端代码,而JS是在客户端执行的。 因此,如果您在 ASP.MVC 中生成视图,您只能访问 C# 数据。您要在页面上打印的所有信息都将静态生成为 HTML 文件。 然后你可以把这个 HTML 页面传递给浏览器,在里面,它会被执行 JS 代码。但仅基于静态生成的数据或 JS 变量。

【讨论】:

    【解决方案2】:

    你不能从 C# 中读取 JS,但是你可以从 JS 中读取 C#。因此,如果它是只读操作,则将您的 C# 对象转换为 JSON 并从 JS 代码访问它。

    试试这个答案:Asp.net mvc passing a C# object to Javascript

    【讨论】:

      猜你喜欢
      • 2018-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多