1

我想有一种方法可以将页面中的所有脚本添加到包中并在标记之前呈现它们。

我的助手看起来像:

 public static MvcHtmlString Script(this HtmlHelper htmlHelper, string scriptBody)
 {
     htmlHelper.ViewContext.HttpContext.Items["_script_" + Guid.NewGuid()] = scriptBody;
     return MvcHtmlString.Empty;
 }

这取自:在编辑器/显示模板中使用部分 问题是我不能像这样在我的视图中使用它:

@Html.Script(
    {
        <script type="text/javascript" src="somescript.js"> </script>
        <script type="text/javascript"><!--
           ...script body
        </script>
    });

有没有可能实现这样的目标?我想要脚本的智能感知,但将文本作为参数发送给我的助手。我对 MVC 要求太多了吗?

4

1 回答 1

1

我做过类似的事情

public static MvcHtmlString Script(this HtmlHelper htmlHelper, string scriptBody)
{
    var stuff = htmlHelper.ViewContext.HttpContext.Items;
    var scripts = stuff['scripts'] as List<string>;
    if( scripts == null )
        scripts = stuff['scripts'] = new List<string>();

    scripts.Add(scriptBody);
    return MvcHtmlString.Empty;
}

这使得以后获取脚本并插入它们变得更加容易。您不必去寻找随机道具,您只需遍历“脚本”。

编辑:

我刚刚阅读了问题的最后一点。如果您正在编写足够的代码以需要智能感知,那么最好将其扔进 .js 文件中......

于 2012-07-18T14:42:28.653 回答