簡體   English   中英

ASP.NET MVC中文件背后的.js代碼中的JavaScript回調URL

[英]JavaScript callback urls in .js codebehind files in ASP.NET MVC

當我們從View頁面引用一個.js文件,然后將URL回調到一個JS文件中時,在VS 2008集成Web服務器或IIS7上運行站點時,URL會無法解析。

例如,我們在JS文件中有這段代碼

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

當與集成的Web服務器一起運行時(在URL http://localhost:54354/WidgetZoneV2/)代碼可以正常工作,但是在IIS7上卻失敗,因為IIS7具有類似http://localhost/virtualdir/WidgetZoneV2 ,因為它稍后,回調中的URL被轉換為http://localhost/WidgetZoneV2 ,這當然不存在。

您如何處理這種情況? 據我所知,唯一的選擇是在運行時動態創建JS。

我有一個vb.net函數,我正是用於這種情況。 遵循約定,我使用ASP.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

所以你的代碼是

ending.createCallback(pending.webRoot + ResolveUrl(“〜/ WidgetZoneV2 / MoveWidget /”)+ sData,pending.widgetAdmin.moveComplete);

我實際上實現了這個字符串擴展方法,但是我在機器上沒有該代碼,是從

希望這可以幫助

如果您的js文件位於“ / Scripts”文件夾中,則文件名為widget.js。 路徑獲取使用jQuery的客戶端腳本。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM