用c中的javascript数组填充razor表#

用c中的javascript数组填充razor表#,javascript,c#,asp.net-mvc,razor,Javascript,C#,Asp.net Mvc,Razor,我有一个javascript数组,该数组从rest检索。我想在razor foreach中填充此数组结果。但我无法在javascript中获得全局数组结果。我该怎么做 这是我的javascript function getAlarmModels(cb) { $.ajax({ url: "SomeURL", type: "GET", contentType: "application/json; charset=utf-8",

我有一个javascript数组,该数组从rest检索。我想在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++)
    {

    }
}

@for(int i=0;i您不能使用Razor呈现通过AJAX接收的数据。原因是页面生命周期:

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

2) 视图在服务器端用Razor呈现,生成的HTML被传递到客户端

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

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

您可以做什么:

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

Razor是服务器端代码—在将文档发送到视图之前,它在服务器上执行。此时甚至不存在javascript数组