2012-11-27 5 views
2

에 나는 모두 StringBuilder를 사용하여 자바 스크립트 코드를 추가 C#에서 기능이, 이쪽은 내 도우미입니다 :자바 스크립트의 StringBuilder

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);
return 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; 

나는이 있어야한다 :

이 내가이 문제

답변

1

를 해결할 수있는 방법을 내가 Html.Raw

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

@Lostdreamer -'Html.Raw'는 편리합니다. –

+0

예, HtmlString을 대신 반환하는 함수가있을 수 있지만 면도기는이 방법으로 인코딩하지 않습니다. –

+0

@Lostdreamer - 이것이 또 다른 유효한 접근 방식입니다. Raw는 단순히 'HtmlString' 인스턴스를 반환합니다. 면도기 진술서를 도우미로부터 주사하는 방법 또한 있습니다. –

1

면도기 구문의 @ 기호는 HTML 인코딩을 수행이 포장 제안

기능의 모든 라인에서 발생 결과의.

IHtmlString을 본인의 메서드에서 반환하면 텍스트가 인코딩 할 필요가 없다는 기호 인 @과 본질적으로 통신 할 수 있습니다.

으로 마지막 줄을 교체하는 것이 가장 쉬운 방법 :

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

그러나, 당신이 통과 무엇에주의!