C# 为什么路由在应该映射到不同的控制器时调用HomeController索引?
我希望url调用BillsController.cs中的索引操作。相反,它从HomeController.cs调用索引操作。如果我使用它,则会调用BillsController的索引操作 按照我的理解,Bills应该映射到controller,它应该默认为Index,而URL中没有第二个参数。为了测试,我试着给出了404。有人能解释这种行为吗?它的行为似乎不正常 my Startup.cs文件中的路由:C# 为什么路由在应该映射到不同的控制器时调用HomeController索引?,c#,asp.net-core,asp.net-core-mvc,asp.net-mvc-routing,C#,Asp.net Core,Asp.net Core Mvc,Asp.net Mvc Routing,我希望url调用BillsController.cs中的索引操作。相反,它从HomeController.cs调用索引操作。如果我使用它,则会调用BillsController的索引操作 按照我的理解,Bills应该映射到controller,它应该默认为Index,而URL中没有第二个参数。为了测试,我试着给出了404。有人能解释这种行为吗?它的行为似乎不正常 my Startup.cs文件中的路由: app.UseMvc(routes => { routes.MapRoute(
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
BillsController:
public class BillsController : Controller
{
public IActionResult Index()
{
return View();
}
}
我的文件夹结构:
@NickOban,我尝试创建一个新的MCV项目,并添加了一个账单控制器。然后我添加了Bills存储库并添加了index.cshtml 这条路对我很有效。然而,似乎您可能在某个时候实现了带有名称Bills的前缀,这将导致您正在经历的现象
确保代码中没有前缀。MVC应用程序应该自动修复任何前缀。加试https://localhost:44354/Bills/Index.cshtml 而不是简单地索引~因为MVC正在导出索引是一个文件夹 您的默认路由映射到Home controller,而不是Bills controller当您调用此选项时:它试图在您的HomeController中找到一个名为Bills的方法。但是,您可能在某个时候使用名称Bills实现了前缀,这将导致您遇到的现象。同意。@Cornelis这看起来很有可能。我确实创建了另一个项目,它的工作方式与您预期的一样。奇怪的是,URLhttps://localhost:44354/Bills/Index.cshtml 给出了一个404。不确定在哪里查找前缀,my launchSettings.json看起来非常标准,只有基本url和端口。我还清除了项目中的所有生成文件并重新生成。没有变化。我想我发现了这个问题。我已进入项目属性,并将应用程序URL更改为。后来我又把它改回来了,但设置一定卡住了。我创建了一个新项目并导入了所有代码。现在一切顺利。感谢所有的反馈!