我正在尝试创建一个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位于文档的顶部?
答案 0 :(得分:2)
假设您正在使用ViewModel进行观看,那么实现您所追求的目标的一种方法就是将这两者分开。
因此,在您的查看中,您可能会遇到以下情况:
@Html.DropDownListFor(model => model.Foo, Model.FooList)
@section scripts { @Helpers.MyLittleJsCode(Model.Foo) }
块@section scripts {}
将呈现您在布局中放置该部分的内容(默认情况下,它在jquery包之后)。
创建一个名为&#34; App_Code&#34;的文件夹。在其中,创建一个名为&#34; 助手&#34;的剃刀文件。粘贴以下内容:
@using System.Web.Mvc;
@helper MyLittleJsCode(string jsString) {
<script type="text/javascript">
alert("@jsString");
</script>
}
这将创建您需要的下拉列表,并在最后创建一个脚本块并将Model.Foo传递给它。我希望这就是你所追求的。