我有VS2010,MVC3和ASP.NET 4.0,带有一个简单的测试mvc应用程序.问题是我仍然一直收到错误:
无法找到该资源.说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用.请查看以下网址,确保拼写正确.
请求的网址:/ Pizzas/Pizza
这是我的简单控制器:
public class PizzasController : Controller
{
public ActionResult Pizza()
{
var pizzas = new Pizza();
return View("Pizza", pizza);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的global.asax的一部分:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{Scripts}/{*pathInfo}");
routes.MapRoute(
"Pizza_1",
"Pizzas/Pizza",
new { controller = "Pizzas", action = "Pizza"}
);
routes.MapRoute(
"Pizzas_2", // Route name
"{controller}/{action}", // URL with parameters
new { controller = "Pizzas", action = "Pizza" } // Parameter defaults
);
}
Run Code Online (Sandbox Code Playgroud)
我试图通过这种方式从pizza.cshtml调用此操作:
@Html.ActionLink("Test", "Pizza", "Pizzas");
Run Code Online (Sandbox Code Playgroud)
当这两条路线都未通过时,执行将转到Pizza_2路线并且它会毫无问题地通过.但是如果我注释掉Pizza_2,那么它会转到Pizza_1并且在没有进入action方法的情况下会发生错误.该应用程序在ASP.NET开发服务器(而不是IIS)上运行.我注意到只有在没有指定完整URL时才能使用Pizza_2路由: http:// localhost:2893
但是如果输入这样的完整URL: http:// localhost:2893/Pizzas/Pizza
错误再次发生.
去掉
routes.IgnoreRoute("{Scripts}/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)
根据http://msdn.microsoft.com/en-us/library/cc668201.aspx#url_patterns {Scripts}被解析为参数.
如果你想为脚本做直通,你应该使用
routes.IgnoreRoute("Scripts/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11023 次 |
| 最近记录: |