2

我在 c# 中有一个函数,我在其中使用 StringBuilder 并添加了 JavaScript 代码,这是我的助手:

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.Net MVC4 中的一个部分中加载应用程序:

如下:

@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

razor 语法中的@符号对结果进行 HTML 编码。

您可以通过从您的方法返回 an 来防止这种情况IHtmlString,该方法本质上与@符号通信,即您的文本不需要编码。

最简单的方法是将最后一行替换为:

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

但是,请小心您传入的内容!

于 2012-11-27T23:44:19.350 回答