Asp.net 将JavaScript转换为StringBuilder

Asp.net 将JavaScript转换为StringBuilder,asp.net,asp.net-mvc,c#-4.0,asp.net-mvc-4,Asp.net,Asp.net Mvc,C# 4.0,Asp.net Mvc 4,我在c#中有一个函数,其中我使用StringBuilder并添加了JavaScript代码,这是我的助手: public static string RegisterJS(this System.Web.Mvc.HtmlHelper helper, string scriptLib) { StringBuilder JavaScript = new StringBuilder(); JavaScript.AppendFormat(@"<script type= ""text

我在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);
我应该有这个:

&lt;script type= &quot;text/javascript&quot;&gt;
<script type= "text/javascript">

这在函数的所有行中都会发生


如何解决这个问题

我建议用

@节工具栏
{
阿奎德博卡加米酒店
@Html.Raw(Html.RegisterJS(“个人”))
}

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

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

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

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

不过,要小心你传递的信息

@Lostdreamer-
Html.Raw
很方便:)是的,你也可以使用返回HtmlString的函数,razor不会这样编码。@Lostdreamer-这是另一种有效的方法,Raw只返回一个
HtmlString
实例。还有一些方法可以从助手处注入整个razor语句。
@section ToolBar
{
 <h2>aqui debo cargar mi javascript</h2>
 @Html.Raw(Html.RegisterJS("Personal"))
}
return MvcHtmlString.Create(JavaScript.ToString());