【问题标题】:populate razor table with javascript array in c#在 c# 中使用 javascript 数组填充剃刀表
【发布时间】:2018-06-12 08:08:04
【问题描述】:

我有一个 javascript 数组,该数组从休息中检索。我想在 razor foreach 中填充这个数组结果。但我无法在 javascript 中访问我的全局数组结果。我该怎么做?

这是我的javascript;

function getAlarmModels(cb) {
    $.ajax({
        url: "SomeURL",
        type: "GET",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        error: failureCb,
        success: successCb,
        timeout: 60000
    });

    function failureCb(jqXHR, textStatus, errorThrown) {
        var errorCode = jqXHR.status;
        var errorText = textStatus;
        console.log("Error Code [" + errorCode + "]: " + errorText);
        if (cb)
            cb(null);
    }

    function successCb(data) {
        window.PreviousBill = JSON.parse(data);
        if (cb)
            cb(JSON.parse(data));
    }
}

这是剃须刀;

@for (int i = 0; i <window.PreviousBill.Count ; i++)
    {

    }
}

如何访问“window.PreviousBill”?

【问题讨论】:

  • Razor 是服务器端代码 - 它在文档发送到视图之前在服务器上执行。那时您的 javascript 数组甚至不存在

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


【解决方案1】:

您不能使用 Razor 呈现通过 AJAX 接收的数据。原因是页面生命周期:

1) 控制器操作处理请求并返回视图。

2) 在服务器端使用 Razor 渲染视图,生成的 HTML 被传递到客户端。

3) 客户端接收 HTML 并在 客户端 上执行任何嵌入的 JavaScript。这包括任何 AJAX 调用。

如您所见,在您的 JS 代码运行时,任何 Razor 语法早已转换为 HTML。另一方面,在 Razor 渲染 View 时,还没有 JS 变量可用。

你可以做什么:

  • 对 AJAX 调用的回复返回已在服务器端使用 Razor 呈现的已完成 HTML(而不是 JSON)。
  • 使用Mustache 之类的 JS 模板语言在客户端使用 JS 而不是 Razor 呈现 JSON 数据。

【讨论】:

    猜你喜欢
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2015-05-21
    相关资源
    最近更新 更多