2012-06-07 3 views
1

У меня есть Model с LevelInfo недвижимости:вызов функции 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.

Смежные вопросы