2010-04-15 5 views
1

우리는 ASP.Net MVC 프로젝트에서 Telerik Rad Controls를 ASP.Net Ajax 용으로 사용하고 있습니다. RadChart는 다음 HTML 생성Telerik RadChart가 onerror 속성을 생성하지 못하게하려면 어떻게해야합니까?

<img onerror="if(confirm('Error loading RadChart image.\nYou may also wish to check the ASP.NET Trace for further details.\nDisplay stack trace?'))window.location.href=this.src;" src="ChartImage.axd?UseSession=true&amp;ChartID=e25ad666-e05b-4a92-ac0c-4f2c729b9382_chart_ctl00$MainContent$AverageCTMChart&amp;imageFormat=Png&amp;random=0.501658702968461" usemap="#imctl00_MainContent_AverageCTMChart" style="border-width: 0px;" alt=""> 

내가 onerror 속성을 제거하고 싶습니다을; 뭔가 잘못되면 스택 추적을 볼 수있는 옵션이 고객에게 제공되기를 정말로 원하지 않습니다. 이 컨트롤이 생성하는 태그를 제어하는 ​​방법이 전혀 없습니다. Google 검색은 도움이되지 않습니다. 전에 누구도이 문제를 다루었습니까?

onerror 속성을 제거하려면 어떻게해야합니까?

답변

1

오류는 디버그 구성에서만 표시됩니다. 일단 Release에서 앱을 배포하면 속성이 렌더링되지 않습니다!

+0

좋은 거래. 그것이 어디에서나 문서화 되었습니까, 아니면 그냥 알아야합니까? –

0

다음과 같이 할 수 있습니다. 페이지 맨 아래에 추가하거나 어딘가에있는 load 이벤트에서 removeOnError를 호출하면됩니다. 내가 생각할 수있는 유일한 방법은 페이지의 렌더링 이벤트를 무시하고 수동을 버리고 그래서 Telerik의 사이트를 보면

function removeOnError(){ 
    //Grab all images 
    var imgs = document.getElementsByTagName('img'); 
    for(var i=0;i<imgs.length;i++){ 
     //If they've got the onerror attribute 
     if(imgs[i].onerror){ 
      //set it to null 
      imgs[i].onerror = null; 
     } 
    } 
} 
//Call the function above 
removeOnError(); 

편집

는이 옵션으로 표시되지 않습니다 :

protected override void Render(HtmlTextWriter writer) 
{ 
    using (System.IO.MemoryStream MS = new System.IO.MemoryStream()) 
    { 
     using (System.IO.StreamWriter SW = new System.IO.StreamWriter(MS)) 
     { 
      HtmlTextWriter NW = new HtmlTextWriter(SW); 
      base.Render(NW); 
      NW.Flush(); 
      MS.Position = 0; 
      using (System.IO.StreamReader SR = new System.IO.StreamReader(MS)) 
      { 
       string html = SR.ReadToEnd(); 
       MatchCollection MC = Regex.Matches(html, "<img.*?(?<OnError>onerror=\".*?\").*?>"); 
       foreach (Match M in MC) 
       { 
        if (M.Success) 
        { 
         html = html.Replace(M.Groups["OnError"].Value, ""); 
        } 
       } 
       Response.Write(html); 
       SR.Close(); 
      } 
     } 
    } 
} 
+0

정말 처음부터 보내지 않는 것이 좋습니다. 이미지 오류가 발생하면로드 이벤트 전에 onerror 이벤트를 발생시킬 수 있습니다. 즉, 이벤트를 제거하기에는 너무 늦습니다. –

+0

MVC 앱에서 렌더링을 재정의 할 수 있습니까? –

+0

어디서나 실행중인 MVC 사이트가 없지만 View Engine에서 RenderView를 재정의했다고 생각합니다. http://msdn.microsoft.com/en-us/library/system.web.mvc.viewpage.renderview.aspx –

0

Telerik 컨트롤을 생성할지 여부를 결정하는 특성

HttpContext.Current.IsDebuggingEnabled 

을 확인의 OnError 속성을. 따라서이 블록을 제거하려면 web.config의 'compilation'노드에서 디버그가 꺼져 있는지 확인하십시오.

<compilation debug="false">  
관련 문제