虚拟目录中的Javascript不知道虚拟目录

说我有网站
    http://localhost/virtual
其中virtual是虚拟目录

我有一个使用JQuery的JavaScript文件中定义的Ajax请求

$.getJSON("/Controller/Action")

当这被调用时,客户端尝试在根级别找到url,即
    http://localhost/Controller/Action

如果我添加波浪号(〜)符号,它会变成
    http://localhost/virtual/~/Controller/Action

它应该(如果要做我想要的)决心
    http://localhost/virtual/Controller/Action

关于如何解决这个问题的任何想法?

最佳答案
我成功使用了这个解决方案

将以下元素放在您的母版页中

<%= Html.Hidden("HiddenCurrentUrl", Url.Action("Dummy"))%>

在您的主要javascript文件中声明一个全局变量

var baseUrl = "";

当您的JavaScript加载时,将baseUrl设置为“HiddenCurrentUrl”值

baseUrl = $("#HiddenCurrentUrl").val();
baseUrl = baseUrl.substring(0, baseUrl.indexOf("Dummy"));

使用baseUrl

$.getJSON(baseUrl + "Action")

编辑改进的解决方案

在你的控制器

ViewBag.BaseUrl = Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath + "/";

在你的主页面

<script type="text/javascript">
    var YourNameSpace = YourNameSpace || {};
    YourNameSpace.config = {
        baseUrl: "@ViewBag.BaseUrl"
    }
</script> 

使用你的baseUrl

$.getJSON(YourNameSpace.config.baseUrl + "Action")

转载注明原文:虚拟目录中的Javascript不知道虚拟目录 - 代码日志