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 に答える