3

我正在尝试创建一个 HTML 帮助程序扩展,除了 HTML 标记之外,它还会生成一些 javascript:

<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 作为您的视图,实现您所追求的一种方法是将这两件事分开。

所以在你的View中,你会有这样的东西:

@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 回答