Razor View Engine и jQuery - PullRequest
       1

Razor View Engine и jQuery

12 голосов
/ 24 августа 2010

Кто-нибудь знает, как заставить механизм Razor View печатать точную строку, которая находится в цикле foreach? Код следует:

@section head{
<script type="text/javascript" src="@Url.Content("~/Content/Scripts/jquery-1.4.1.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Content/Scripts/jquery.progressbar.min.js")"></script>

<script type="text/javascript">

    $(document).ready(function() {
        @foreach(var player in Model)
        {
            jQuery("#pb@PlayerID").progressBar();
        }
    });
</script>

}

Я пытался использовать $ () и jQuery (), но в обоих случаях бритва не знает, что делать. Есть ли способ заставить его напечатать точно так: jQuery ("# ​​pb @ PlayerID"). ProgressBar (); . Я хочу иметь что-то вроде этого:

$(document).ready(function() {
    $("#pb1").progressBar();
    $("#pb2").progressBar();
    $("#pb3").progressBar();

}); * +1011 *

Заранее спасибо!

Ответы [ 2 ]

22 голосов
/ 24 августа 2010

Внутри блока @foreach содержимое является кодом по умолчанию, если вы не переключитесь обратно на разметку. Таким образом, строка «jQuery (...). ProgressBar ()» считается C #. В таких случаях, когда вам нужна разметка, отличная от HTML, вы можете использовать тег , который фактически не отображается, ИЛИ директиву @:, которая указывает Razor обрабатывать оставшуюся часть строки как разметку, нет независимо от того, что он содержит (конечно, вы можете использовать «@» в строке, чтобы вложить дополнительные блоки кода).

Кроме того, pb @ PlayerID выглядит как адрес электронной почты для Razor, поэтому он игнорирует его. Вы можете избежать этого, используя синтаксис выражения explict @ (). Таким образом, блок @foreach должен выглядеть следующим образом:

@foreach(var player in Model)
{
    @: jQuery("#pb@(PlayerID)").progressBar();
}
3 голосов
/ 31 декабря 2010

Эта очень полезная статья Скотта Гу объясняет все, что вам нужно знать, и охватывает практически все ситуации.

Вот явный стиль , упомянутый @Manticore - в статье гораздо больше примеров.

alt text

...