1

我有一个 localhost 有几个项目,所以这个项目在 VS2010 properties->web->use local IIS web server = 'localhost/project4/'。(我不能使用正常的调试 VS 开发服务器,因为某些组件在我的项目中不起作用)无论如何,localhost 没什么大不了的,所以我继续编码。

现在,当我调用 .load('/Account/LogOn'); 时,在 ajax 中 它给了我“localhost/Account/LogOn”,但我真正想要的是“localhost/project4/Account/LogOn”,因为它位于 project4 目录中,而不是根目录中。

知道如何告诉 ajax 我需要域名和 URL 其余部分之间的虚拟目录前缀吗?

编辑 - - - - - - - - - - - - - - - - - - - - - -

谢谢大家,结合您的所有知识,我想最好的方法是:

  1. 将 js 脚本包含到 .cshtml 服务器端并使用“~/Account/LogOn/”让 .net 找出路径。

  2. 创建一个全局变量 remove_me_debug_only_virtual_directory = "/project4/"; 在 js 代码中。将其附加到域名。这样我们就不用把 .net 拉到水里,用 .cshtml 写 js 代码了。

  3. 如果可以的话,将项目移动到 localhost/root,在这种情况下我不能,因为工作中的其他人想要访问这个网络服务器并进行演示。

4

3 回答 3

3

如果您的 JS 代码在 MVC cshtml 文件中,请像这样使用它:

.load('@Url.Action("LogOn", "Account")');

正确的 URL 将放置在具体的 JS 代码中。

于 2012-06-28T12:38:38.620 回答
2

根据.net文件,

服务器控件中的绝对和相对路径引用具有以下缺点:

绝对路径在应用程序之间不可移植。如果移动绝对路径指向的应用程序,链接将断开。

如果将资源或页面移动到不同的文件夹,则客户端元素样式中的相对路径可能难以维护。

为了克服这些缺点,ASP.NET 包含了 Web 应用程序根运算符 (~),您可以在指定服务器控件中的路径时使用它。ASP.NET 将 ~ 运算符解析为当前应用程序的根。您可以将 ~ 运算符与文件夹结合使用,以指定基于当前根目录的路径。

因此,如上所述,using~将使用 asp 将您引导到 Web 项目的根目录:

 <asp:image runat="server" id="Image1" ImageUrl="~/Images/SampleImage.jpg" />

有关更多信息,请访问:Web 项目路径

根据您的更新:可能重复:使用 jQuery 的基本 url

@gregguida 声明的地方:

  var l = window.location;
  var base_url = l.protocol + "//" + l.host + "/" + l.pathname.split('/')[1];

  //all you need to do is work with l.pathname.split('/') to find what you need.
于 2012-06-28T12:18:36.633 回答
1

我是一名 Java 开发人员,但两种情况下的上下文都是相同的,您可以按照以下步骤操作

  1. 如果 root 是“/”,请检查服务器的上下文,然后你必须调用类似的东西,

    .load('/project4/Account/LogOn');

  2. 如果您的应用程序是 root 并且您可以从自身调用此请求,那么

    .load('帐户/登录');

于 2012-06-28T12:05:42.190 回答