2012-06-07 151 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。