在razor foreach语句中调用JS函数

use*_*827 1 javascript asp.net-mvc asp.net-mvc-3

我有一个ModelLevelInfo属性:

public IEnumerable<Tuple<string, string, string>> LevelInfo { get; set; }
Run Code Online (Sandbox Code Playgroud)

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

function fillPath(level, color) {
        $('[level=' + level).attr({ 'fill': color });
    }
Run Code Online (Sandbox Code Playgroud)

现在我想迭代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)
        }
    });
Run Code Online (Sandbox Code Playgroud)

谢谢.

Eri*_* J. 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
    }
});
Run Code Online (Sandbox Code Playgroud)

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