【发布时间】:2017-12-08 21:15:35
【问题描述】:
/pages/defaultcontroller
/pages/datacontroller
/pages/infocontroller
所有控制器都有一个Index 操作,并且在views 文件夹中有index.cshtml 视图。系统可以找到默认的控制器,但是找不到其他的。
例如http://servername/pages/default 工作正常,但 http://servername/pages/data 不起作用,http://servername/pages/info 不起作用
错误是
“/”应用程序中的服务器错误。
找不到资源。
描述:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。
请求的网址:/pages/info
我有这条路线,已配置
context.MapRoute(
"pages_default",
"pages/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
唯一奇怪的是,这是添加到现有 Web 表单项目中的 mvc 部分,作为向 mvc 的应用程序迁移开发的一部分。
我对 mvc 很陌生,到目前为止我还很享受 :)
有什么想法吗?
更新
我尝试添加额外的路由,仍然是同样的问题
context.MapRoute(
"pages_data",
"pages/data/{action}/{id}",
new { controller = "data", action = "Index", id = UrlParameter.Optional }
);
context.MapRoute(
"pages_info",
"pages/info/{action}/{id}",
new { controller = "info", action = "Index", id = UrlParameter.Optional }
);
context.MapRoute(
"pages_default",
"pages/{controller}/{action}/{id}",
new { controller = "default", action = "Index", id = UrlParameter.Optional }
);
更新(2)
路由调试器的输出(问题顶部)
【问题讨论】:
-
使用
RouteDebuggerNuGet pkg,它将帮助您调试问题 -
检查控制器名称的命名空间是否正确,并检查 RouteDebugger 生成的路由。通常这个问题是由于路线或区域配置中的错误设置引起的。
-
我也不会使用
pages,因为控制器不是页面。 -
Controllers 文件夹中也有 DefaultController?
-
尝试将所有控制器文件放在
Controllers目录中,先看看它们是否正常工作,然后配置视图引擎以找到合适的视图(我告诉你这可能是控制器命名空间问题)。使用pages作为控制器父目录偏离了 MVC 标准,其中控制器存储在Controllers目录中,视图存储在Views目录中。
标签: c# asp.net-mvc visual-studio-2013 asp.net-mvc-5