2

StringBuilderを使用してJavaScriptコードを追加したc#の関数があります。これは、私のヘルパーです。

public static string RegisterJS(this System.Web.Mvc.HtmlHelper helper, string scriptLib)
{
    StringBuilder JavaScript = new StringBuilder();
    JavaScript.AppendFormat(@"<script type= ""text/javascript"">{0}", Environment.NewLine);
    JavaScript.AppendFormat(@"var toolbar = new toolBarObject('toolbarObj');{0}", Environment.NewLine);
    JavaScript.AppendFormat(@"toolbar.disableElements('" + scriptLib + "', true);{0}", Environment.NewLine);

... ... JavaScript.AppendFormat(@ "{0}"、Environment.NewLine);
JavaScript.ToString();を返します。}

この関数は、セクション内のAsp.NetMVC4にアプリケーションをロードするために呼び出されます。

次のように:

@section ToolBar{
  <h2>aqui debo cargar mi javascript</h2>
   @Html.RegisterJS("Personal")
}

プログラムを実行して、次のページコードを表示します。

&lt;script type= &quot;text/javascript&quot;&gt;

そして私はこれを持っている必要があります:

<script type= "text/javascript">

これは関数のすべての行で発生します

この問題をどのように解決できるか

4

2 に答える 2

1

これを包むことをお勧めします Html.Raw

@section ToolBar
{
 <h2>aqui debo cargar mi javascript</h2>
 @Html.Raw(Html.RegisterJS("Personal"))
}
于 2012-11-27T23:44:11.057 に答える
1

@かみそり構文のシンボルは、結果のHTMLエンコードを行います。

これを防ぐにIHtmlStringは、メソッドからを返します。これは、基本的に@、テキストをエンコードする必要がないことをシンボルに伝えます。

これを行う最も簡単な方法は、最後の行を次のように置き換えることです。

return MvcHtmlString.Create(JavaScript.ToString());

ただし、渡すものには注意してください。

于 2012-11-27T23:44:19.350 に答える