2012-06-07 120 views
1

我有一个ModelLevelInfo属性:调用JS功能

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) 
     } 
    }); 

谢谢。

+0

你想在服务器或客户端调用'fillPath'? – leppie

+0

@leppie:在客户端。 – user1260827

回答

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有时对识别从服务器端到客户端代码的转换有点挑剔。您可能需要将JavaScript代码打包到<text>以帮助Razor。