我试图通过ajax调用一个动作方法,但我得到的是404.为了说明,以下是我的ajax:
$.ajax({
type: "GET",
url: "/Product/LandingPage",
data: {trackingCode: trackingCode, productId: productId},
success: function (data) {
alert("I worked!");
}
});
通过提示参数,我可以看到trackingCode和productId都已成功设置,因此不是问题。我想,为了测试这个,我应该能够像这样直接调用URL:
http://www.mywebsite.com/Product/LandingPage?trackingCode=fgdfg&productId=213456
然而,当我尝试我得到404错误时,所以路由可能不起作用。我添加了以下路线:
routes.MapRoute(
"Product_LandingPage",
"Product/LandingPage",
new { controller = "Product", action = "LandingPage" }, new { trackingCode = UrlParameter.Optional ,productId = @"\d+" });
但我仍然得到404.这是我的产品控制器方法:
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
public ActionResult LandingPage(string trackingCode, int productId)
{
//Some magic in here
}
我有一种感觉,我在这里遗漏了一些明显的东西。关于我为什么要获得404的任何想法?
请注意,这可能是导致问题的其他一些代码,我只是想要理智地检查我在做什么来排除我的愚蠢错误。
答案 0 :(得分:0)
使用Phil Haacks路由调试器我发现了这个问题,它是由另一条路由引起的,它位于route命令链的上方。重组对此进行了整理。感谢您的帮助。