带脚本的HtmlHelper扩展

时间:2012-09-10 23:31:56

标签: c# asp.net-mvc

我正在尝试创建一个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位于文档的顶部?

1 个答案:

答案 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传递给它。我希望这就是你所追求的。