Asp.net 将JavaScript转换为StringBuilder
我在c#中有一个函数,其中我使用StringBuilder并添加了JavaScript代码,这是我的助手: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
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);
我应该有这个:
<script type= "text/javascript">
<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());