没有在SPA应用程序中点击我的控制器操作

时间:2018-03-29 23:26:27

标签: c# asp.net asp.net-core asp.net-core-routing

我有一个带有React前端的ASP.NET Core应用程序。以下是我int main() { /* 2D array declaration and size of each Array in the Programme*/ int Array[2][3]; printf ("***** Bubble Sort Assessment 2 ***** \n"); /*Counter variables for the loop*/ int i, j; for(i=0; i<2; i++) { for(j=0; j<3; j++) { printf("Enter numeric values for each Array [%d][%d]: \n", i, j); scanf("%d", &Array[i][j]); } } /*Displaying array elements*/ printf("\n The 2-D Array contains : \n"); for(i=0; i<2; i++) { for(j=0; j<3; j++) { printf("%d " , Array[i][j]); if(j==2) { printf("\n"); } } } printf("\n\nAscending : "); for (int i = 0; i < 2; i++) { printf(" %d ", a[i]); } for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { if (a[j] < a[i]) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } } } return 0; }中定义的路线。

Startup.cs

我在app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); routes.MapSpaFallbackRoute( name: "spa-catchall", defaults: new { controller = "Home", action = "Index" }); }); 中创建了一个测试操作,它将提供一个静态页面,但我没有点击它。我总是以HomeController结束,这被定义为全能路线。

这是我在Home/Index下的测试操作:

HomeController

我试图通过转到[Route("test")] [AllowAnonymous] public IActionResult Test() { return View(); } 来尝试它,但它无法正常工作。我也试过了http://localhost:123/test。这也不起作用。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

如果Home控制器定义为:

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }

    [Route("test")]
    [AllowAnonymous]
    public IActionResult Test()
    {
        return View();
    }
}

然后向http://localhost:123/test的请求应该点击Test()操作。属性路由优先于传统路由。由于您已使用Route属性进行Test操作,因此您在UseMvc调用中映射的路线无关紧要,但这些路线并未使用。

http://localhost:123/test未击中的唯一原因是您在控制器级别上也有Route属性。如果它是Route("home"),那么Test()网址就可以http://localhost:123/home/test行动。如果您想保留控制器级别属性,则将TestAction()的路由属性从[Route("test")]更改为[Route("/test")]将使http://localhost:123/test达到TestAction()

如果仍然没有帮助,请使用HomeController的完整代码更新问题。