2014-10-14 10 views
0

Telerik RadEditor에서 홀수 문자 삽입을 일으키는 것으로 알려진 문제점이 있습니다 (documented here).Teleric RadEditor - 클라이언트 OnClientSubmit 이벤트를 스킨 파일에 등록 할 수 있습니까?

문제를 해결하려면 OnClientSubmit 이벤트에서 문제가되는 문자를 제거하기위한 클라이언트 측 스크립트를 삽입해야합니다.

이 컨트롤은 여러 곳에서 사용되며 스킨 파일에 3 가지 스타일이 정의되어 있습니다. 또한 RichEdit이라고 부르는 사용자 지정 컨트롤에서 RadEditor에서 사용자 지정 컨트롤을 파생시킵니다.

우리의 RichEdit 컨트롤의 모든 인스턴스가 필수 클라이언트 쪽 이벤트를 받도록 보장하기 위해이 접근 방식이 효과가 있습니까?

1) RichEdit.cs OnLoad에서 필요한 javascript 함수 을 포함하는 클라이언트 스크립트 블록을 등록하십시오. 2) 스킨 파일에서 필요한 OnClientSubmit 메서드 호출을 각 스킨에 추가 하시겠습니까?

그럼 작동할까요? 그리고 그렇지 않다면 무엇을해야합니까?

답변

-1

그리고 대답은 '예'입니다.

private void AddRichEditGarbageCharacterWorkaround() 
    { 
     string scriptName = "RadEditorOnClientSubmit"; 
     Type csType = GetType(); 

     ClientScriptManager csm = Page.ClientScript; 
     if (!csm.IsClientScriptBlockRegistered(csType, scriptName)) 
     { 
      StringBuilder sb = new StringBuilder(); 
      sb.Append("<script type=\"text/javascript\">"); 
      sb.Append("\tfunction RadEditorStripGarbage(editor, args) {"); 
      sb.Append("\t\tvar html = editor.get_html();"); 
      sb.Append("\t\thtml = html.replace(/\u200b/g, \"\");"); 
      sb.Append("\t\teditor.set_html(html);"); 
      sb.Append("\t\t}"); 
      sb.Append("</script>"); 

      csm.RegisterClientScriptBlock(csType, scriptName, sb.ToString()); 
     } 
    } 

그리고 피부에 이것을 추가 :

페이지로드 섹션에서이 메서드 호출을 추가

<nt:RichEdit runat="server" SkinID="SpellCheckOnly" ... 
OnClientSubmit="RadEditorStripGarbage" > 

성공적 코드와 모든 인스턴스에 후크를 추가했습니다.