2012-08-02 7 views
2

스파크 뷰 엔진을 사용하여 웹 사이트를 개발하고 있습니다. 스파크 뷰 중 하나을 ViewData 같이 그이 같은 스파크보기 (짧은) 모양으로 정의 자바 스크립트에서 사용 정의한 :스파크 뷰 엔진의 뷰 데이터를 사용하여 따옴표가있는 매개 변수가있는 자바 스크립트 함수를 호출하는 데 문제가 있습니다.

<viewdata model="ConversationViewModel"/> 

<content name="Conversation"> 
    ... 
    <script type="text/javascript"> 
    $(function() { 
     conversation.init("$!{Model.RelationFullName}"); 
    }); 
    </script> 
</content> 

여기서 문제는 RelationFullName 속성 하나 포함하는 값을 가질 수 있다는 따옴표 및/또는 큰 따옴표.

따옴표를 이스케이프하는 방법이 있습니까?

답변

1

확장 메서드 JavaScriptEscape을 첫 번째 매개 변수로 사용하여 this string을 만든 다음 _global.spark에 use 태그를 추가 할 수 있습니다. 메서드는 special characters을 대체하고 결과를 반환합니다. 백 슬래시를 먼저 교체해야합니다. 그렇지 않으면 '\' 대신 \\'이됩니다. _global.spark에서

namespace Whatever.Your.Namespace.Is 
{ 
    public static class MyStringExtensions 
    { 
     public static String JavaScriptEscape(this String p_string) 
     { 
      p_string = p_string ?? String.Empty; 
      p_string = p_string.replace("\\", "\\\\"); 
      /* Do the rest of the replacements, include single and double quotes. */ 
      return p_string; 
     } 
    } 
} 

:

<use namespace="Whatever.Your.Namespace.Is" /> 

자바 스크립트 귀하의 라인은 다음과 같다 :

conversation.init("$!{Model.RelationFullName.JavaScriptEscape()}"); 

행운을 빕니다!