MVC5无法在默认

时间:2017-07-05 09:28:05

标签: c# asp.net-mvc visual-studio-2013 asp.net-mvc-5

enter image description here我遇到了路由问题。我在同一个文件夹中有3个控制器。

/pages/defaultcontroller
/pages/datacontroller
/pages/infocontroller

所有控制器都有Index个操作,并且views文件夹中有index.cshtml个视图。系统可以找到默认控制器,但无法找到其他控制器。

E.g。 http://servername/pages/default工作正常但http://servername/pages/data无法正常工作且http://servername/pages/info无法正常工作

错误是

' /'中的服务器错误应用

无法找到资源。

描述:HTTP 404.您正在查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。

请求的网址:/ pages / info

我有这条路线,已配置

context.MapRoute(
    "pages_default",
    "pages/{controller}/{action}/{id}",
    new { action = "Index", id = UrlParameter.Optional }
);

唯一奇怪的是,这是作为应用程序迁移开发到mvc的一部分添加到现有Web表单项目的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 }
        );

UPDATE(2)

路由调试器的输出(问题的顶部)

2 个答案:

答案 0 :(得分:0)

你的路线应该是:

controller

您没有在默认值中定义AssertComponent参数。

答案 1 :(得分:0)

我发现了问题。我重命名了该文件夹以避免可能的系统冲突。 当我添加新控制器时,它们的命名空间反映了新的文件夹名称,其中现有项目具有基于原始文件夹名称的旧命名空间。

重命名现有文件命名空间以反映新文件夹后,一切正常。它给我带来了一些额外的工作,但我现在回到正轨

感谢大家的输入