在razor foreach语句中调用JS函数

时间:2012-06-07 06:35:09

标签: javascript asp.net-mvc asp.net-mvc-3

我有Model LevelInfo属性:

public IEnumerable<Tuple<string, string, string>> LevelInfo { get; set; }

在视图中我有一个JS函数:

function fillPath(level, color) {
        $('[level=' + level).attr({ 'fill': color });
    }

现在我想迭代LevelInfo并调用fillPath函数:

$(document).ready(function() {

        @foreach (var info in Model.LevelInfo)
        {
            // How can I call JS function from here?
            // i.e,  fillPath(info.Item1, info.Item2)
        }
    });

感谢。

1 个答案:

答案 0 :(得分:8)

请注意,@foreach在服务器端执行,并为{}之间的内容发布HTML。

只需在括号之间编写JavaScript。

$(document).ready(function() {

    @foreach (var info in Model.LevelInfo)
    {
        fillPath(info.Item1, info.Item2) // Assumes this is a function defined in JavaScript elsewhere
    }
});

Razor有时对于识别从服务器端到客户端代码的转换有点挑剔。您可能需要在<text>中包装JavaScript代码以帮助Razor。