12

誰かがRazorViewエンジンに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();

});

前もって感謝します!

4

2 に答える 2

22

@foreach ブロック内では、マークアップに戻さない限り、コンテンツはデフォルトでコードです。したがって、「jQuery(...).progressBar()」行は C# と見なされます。このような HTML ではないマークアップが必要な場合は、実際にはレンダリングされない <text> タグを使用するか、Razor に残りの行をマークアップとして扱うように指示する "@:" ディレクティブを使用できます。内容に関係なく (もちろん、行内で "@" を使用してさらにコード ブロックをネストすることができます)。

また、「pb@PlayerID」は Razor への電子メール アドレスのように見えるため、無視されます。@() 明示的な式構文を使用することで、これを回避できます。したがって、@foreach ブロックは次のようになります。

@foreach(var player in Model)
{
    @: jQuery("#pb@(PlayerID)").progressBar();
}
于 2010-08-24T14:57:29.927 に答える
3

Scott Gu によるこの非常に役立つ記事では、知っておくべきことをすべて説明しており、ほとんどすべての状況がカバーされています。

@Manticore によって言及された明示的な <text> スタイルは次のとおりです。記事にはさらに多くの例があります。

代替テキスト

于 2010-12-31T11:42:55.430 に答える