.net核心mvc路由和控制器

时间:2016-10-20 16:05:09

标签: asp.net-core-mvc

所以我是.net的新手。我正在学习.net核心。我想弄清楚路由。我似乎无法在除Home和Shared之外的任何文件夹中查找路由。我在互联网上看了很多东西。似乎有一些我想念的东西。这是我得到的

sip

我有一个带有test.cshtml文件的Register文件夹,试图找出这个路由。这是在我的HomeController.cs文件中

 app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "test", 
                    template: "Register/test",
                    defaults: new { controller = "Register", action = "test"}
                    );

                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");


            });

在我的_Layout页面上我有这个链接

        public IActionResult test()
        {
            return View();
        }

当我把它放在主文件夹中时它工作正常,但我想把事情分开。我知道我遗失了一些东西。我已经在网上发表各种文章,包括Stack Overflow,我只是不明白我错过了什么。从我读到它的假设就像父文件夹/文件/然后和id可能附加到那个像用户名我尝试了其他格式的路由没有运气,这只是我最近的尝试。我不禁想到我在其他地方需要一些代码。

1 个答案:

答案 0 :(得分:0)

从您的问题看,您HomeController中的代码似乎如下。

public IActionResult test()
{
    return View();
}

它实际上属于您的RegisterController,因为您定义的路由模板是一个显式捕获,默认为"注册"控制器和"测试"动作。

该视图名为" test.cshtml" - 由于默认约定而应该这样命名 - 应该位于\Views\Register隔壁的\Views\Home文件夹中。

有几个原因可能会以某种方式起作用。首先,如果任何控制器共享,则该视图是可发现的。如果不了解您尝试过的请求的更多信息,很难确定路由是否在第一条路径或第二条路径上启动,但如果该方法确实在HomeController上,则对/ home / test的请求将起作用。

在我看来,你正在探索路线。这很好 - 我100%鼓励进行实验 - 只要你知道路由不一定是最难学的东西。它也是你不应该触及93.7%的时间。例如,您已定义的路线对于您使用RegisterControllertest添加的控制器和操作不是必需的。

干杯。