3

HTML タグに加えて JavaScript を生成する HTML ヘルパー拡張機能を作成しようとしています。

<select id="foo" name="foo"></select>

<script type="text/javascript">
    // script to populate select with data via $.getJSON
</script>

デフォルトの MVC 4 テンプレートでは、jquery スクリプトがバンドルされ、HTML ドキュメントの最後に配置され、スクリプト セクションがあります。

@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)

ドキュメントの最後にスクリプトを追加するように HTML ヘルパー拡張機能に指示する方法はありますか、それとも jQuery がドキュメントの一番上に来るようにレイアウトを変更するだけでよいのでしょうか?

4

1 に答える 1

2

ビューにViewModelを使用していると仮定すると、目的を達成する1つの方法は、2つのことを分離することです。

したがって、ビューには次のようなものがあります。

@Html.DropDownListFor(model => model.Foo, Model.FooList)
@section scripts { @Helpers.MyLittleJsCode(Model.Foo) }

ブロック@section scripts {}は、レイアウト内のセクションを配置した場所にコンテンツをレンダリングします(デフォルトではjqueryバンドルの後にあります)。

「App_Code」というフォルダーを作成し、その中に「Helpers」というかみそりファイルを作成します。以下を中に貼り付けます。

@using System.Web.Mvc;
@helper MyLittleJsCode(string jsString) {
<script type="text/javascript">
    alert("@jsString");
</script>
}

これにより、必要なドロップダウンリストが作成され、最後にスクリプトブロックが作成され、Model.Fooがそこに渡されます。これがあなたが求めていたものだったと思います。

于 2012-09-11T01:13:04.313 に答える