Razor View Engine и jQuery

кто-нибудь знает, как заставить механизм 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();

});

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

12
задан rjovic 24 August 2010 в 11:59
поделиться

1 ответ

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

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

@foreach(var player in Model)
{
    @: jQuery("#pb@(PlayerID)").progressBar();
}
22
ответ дан 2 December 2019 в 06:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: