使用 ASP.NET MVC 在 URL 中两次获取控制器名称

使用 ASP.NET MVC 在 URL 中两次获取控制器名称

抱歉,这个问题比较菜鸟,但正如您所看到的,控制器名称在 URL 中出现了两次,并且只有当它出现在 URL 中两次时才有效: 网址

我的控制器如下所示: 控制器动作

我的观点如下:

看法

我知道这不是我的路由,因为如果我创建另一个视图,路由工作正常。如果我只输入http://本地主机:50903/用户然后出现一个空白屏幕。我认为它由于 try-catch 块而返回 null,但是当它调用该函数时,它在 UserDao 中会发生以下情况:

用户Dao

这是它调用的存储过程:

存储过程

请帮帮我,我快疯了

答案1

您是否在应用程序中创建了区域?因为如果您创建了区域并将用户控制器文件夹放在其中,那么您可以获得两次控制器名称。正如我所看到的,它显示了您的第一个控制器名称用户是小写的,因为一般当我们创建区域时,我们大多数时候都用小写来命名它。

用户控制器名称在 URL 中出现两次,因为它在 URL 中包含区域名称,如下所示:

routes.MapRoute(
      name: "user_route",
      template: "{area:required}/{controller:required}/{action}/{id?}",
      defaults: new { area = "users", controller = "Users" 
      });

从路线中移除区域。

routes.MapRoute(
      name: "user_route",
      template: "{controller:required}/{action}/{id?}",
      defaults: new { controller = "Users", action = "Index" 
      });

这样,您的控制器名称将只会在 URL 中出现一次。

笔记:仅当您在应用程序中创建了区域时才有用。如果您没有创建区域,请告诉我,我们会找到其他解决方案。

希望这对你有帮助。
谢谢。

答案2

我发现了问题所在。我必须更改控制器的名称才能使其正常工作。我的应用程序可能已经混淆了,因为控制器名称与视图的名称相同。

相关内容