2010-12-02 12 views
0

왜 자바 스크립트는이 asp.net var에 액세스 할 수 없습니까?

나는이 C# 사용자 정의 컨트롤 클래스가있다.

public partial class UserControls_JsTop : System.Web.UI.UserControl 
{ 
    public static string sidebarBannerUrl = getSideBarBannerImgUrl(); 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    public static string getSideBarBannerImgUrl(){ 
     DataClassesDataContext db = new DataClassesDataContext(); 
     var imgUrl = (from b in db.Banners 
         where b.Position.Equals(EBannersPosition.siderbar.ToString()) 
         select b).FirstOrDefault(); 
     if (imgUrl != null) 
      return imgUrl.Path; 
     return String.Empty; 

    } 
} 
js 스크립트에서 정적 var에 액세스하려고한다.

여기에로드 :

<script type="text/javascript"> 
    var categoryParam = '<%# CQueryStringParameters.CATEGORY %>'; 
    var subcategory1Param = '<%# CQueryStringParameters.SUBCATEGORY1_ID %>'; 
    var subcategory2Param = '<%# CQueryStringParameters.SUBCATEGORY2_ID %>'; 
    var imgUrl = '<%# UserControls_JsTop.sidebarBannerUrl %>'; 
</script> 

및 여기에서 사용 (imgUrl) :

<script type="text/javascript" language="javascript"> 
    $(function() { 
     $(document.body).sidebar({ 
      size: "30px", // can be anything in pixels 
      length: "270px", // can be anything in pixels 
      margin: "300px", // can be anything in pixels 
      position: "left", // left/bottom/right/top 
      fadding: "0.8", // 0.1 to 1.0 
      img: imgUrl, 
      openURL: "www.twitter.com/amitspatil" 
     }); 
    }); 

</script> 

왜 그것이 비어 있는지 모르겠습니다. 저 조건으로 DB에 기록이 있다는 것을 믿어주십시오.

var를로드 할 때 몇 가지 js 문제가 있다고 생각합니다 ...

어디에서 아십니까?

덕분

+1

XSS 구멍이 있습니다. – SLaks

답변

3

변경 #=으로는 데이터 바인딩 한 대신 일반 표현식을 사용합니다.

+0

당신은 내 하루를 구했습니다! –

+0

또한 WPL을 사용하여 XSS 구멍을 막아야합니다. http://wpl.codeplex.com/ – SLaks

+0

이 정도면 충분하지 않습니까? return HttpUtility.HtmlEncode (VirtualPathUtility.ToAbsolute (imgUrl.Path)); –

관련 문제