繁体   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