2009-10-01 8 views
0

보기 페이지에서 참조하고 JS 파일로 콜백 된 URL이있는 .js 파일이있는 경우 URL이 해결되지 않을 때 문제가 발생합니다. VS 2008 통합 웹 서버 또는 IIS7에서 실행중인 사이트.ASP.NET 콜백 URL의 .js 코드 자바 스크립트 콜백 URL

예를 들어, 우리는 URL http://localhost:54354/WidgetZoneV2/)에 (통합 웹 서버와 함께 실행하지만 IIS7에 실패 할 때 우리는이 같은 URL이 곳이 코드 조각이 잘 작동

pending.createCallback(pending.webRoot + "../../WidgetZoneV2/MoveWidget/" + sData, pending.widgetAdmin.moveComplete); 

파일 JS 코드의 조각이 http://localhost/virtualdir/WidgetZoneV2, 나중에 경우에 따라 콜백의 URL이 http://localhost/WidgetZoneV2으로 변환되었으므로 당연히 존재하지 않습니다.

어떻게 이런 종류의 사례를 처리합니까? 유일한 옵션은 동적으로 JS를 만드는 것입니다 런타임에는

답변

1

나는이 상황에 정확하게 사용하는 vb.net 함수를 가지고있다.

Public Shared Function ResolveUrl(ByVal URL As String) As String 
     If URL.StartsWith("~") Then 
      Return (HttpContext.Current.Request.ApplicationPath & URL.Substring(1)).Replace("//", "/") 
     Else 
      Return URL 
     End If 
    End Function 

을 다음과 같이 규칙을 따라 난 그래서 당신의 코드가

이 될 것입니다 전체 가상 루트에 '/'다음에이 문자의 인스턴스를 ASP.NET 상대 사이트 루트 문자 '~'를 사용하고 해결

pending.createCallback (pending.webRoot + ResolveUrl ("~/WidgetZoneV2/MoveWidget /") + sData, pending.widgetAdmin.moveComplete);

사실이 문자열 확장 메서드를 구현하지만 난 "/ 스크립트"폴더에 JS 파일 경우이

+0

이 코드는 괜찮아 보이지만 .NET 코드는 .JS 파일 내에서 실행됩니까? 내 JavaScript를 뷰에 직접 삽입하지 않고 대신 JavaScript에 연결합니다. – mare

+0

오, 미안하다. 당신이 할 수있는 일은 핸들러를 통해 js 파일을 보내고 코드로 변경할 수 있습니다. 나는 나의 blog에 이것을 설명하고있는 포스트를했다 http://www.thecodeface.co.uk/Post/View/1 –

1

하는 데 도움이

희망에서이 글을 쓰는 기계 메신저에 그 코드를 가지고 있겠지, 파일 이름 widget.js입니다. Path get client 스크립트는 jQuery를 사용합니다.

var widgetSrc = $("script[src*=/widget.js]:first").attr("src"); 
var path = widgetSrc.substring(0, widgetSrc.indexOf("/widget.js"));