ASP MVC 3:HtmlHelper获取javascript参数以供以后呈现

时间:2012-07-18 14:34:32

标签: asp.net-mvc asp.net-mvc-3

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

我的助手看起来像:

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

取自:Using sections in Editor/Display templates 问题是我不能在我的视图中使用它:

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

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

1 个答案:

答案 0 :(得分: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文件中抛出它......