问题:我已经把这个问题搞砸了几天了,但仍然没有找到任何解决方案。问题是,当我在我的本地机器上时,我正在尝试使用以下代码:
$.post('@Url.Action("TestAction", "Home")', function () { alert("Success"); }).fail(function () { alert("Error"); });
Home
是我的控制器的名称 - HomeController
。我指定了控制器名称,因为我的解决方案中有多个控制器。
[HttpPost]
public ActionResult TestAction()
{
return View();
}
我这样做是为了看看我的代码是否会完全触及此方法,但事实并非如此。
但是,如果我开始一个新项目并尝试它,这段代码确实有效。我需要它来处理我当前的项目,并且启动它不是一个选项,因为它适用于其他计算机,而不是我的,它甚至可以在网络上工作。
上面的代码给出了路径:TestSolution/Home/TestAction
这是正确的,但代码永远不会点击TestAction
函数,因此显示“错误”警告框而不是“成功”。它确实在其他计算机和网络上显示“成功”,而不是我的计算机。
因此,对于我的计算机,我一直在使用以下代码(仅适用于我的计算机而不适用于其他人或网络,这是预期的):
$.post('@Url.Action("Home/TestAction")', function () { alert("Success"); }).fail(function () { alert("Error"); }
此代码为我提供了路径:TestSolution/Home/Home/TestAction
这是不正确的,但是命中TestAction函数并仅为我的计算机显示“成功”警报框,运行此命令的其他计算机将显示“错误”警报框。
注意:我还尝试过以下代码,其行为与第一个类似:
$.post('@Url.Action("TestAction")', function () { alert("Success"); }).fail(function () { alert("Error"); });
此路径为:TestSolution/Home/TestAction
答案 0 :(得分:4)
鉴于它除了你的计算机以外的其他任何计算机都可以正常工作。您声明,当您发送到的网址为TestSolution/Home/Home/TestAction
时,它会起作用。您是否检查了网站/虚拟目录的IIS配置,以确保没有额外的Home
?
您可能还想查看Phil Haack的路由调试器(http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx),看看是否能为您提供有关本地计算机上发生情况的任何其他线索。