没有在 SPA 应用程序中点击我的控制器操作
Not hitting my controller action in SPA app
我有一个带有 React 前端的 ASP.NET 核心应用程序。以下是我的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
来实现它,但它不起作用。我也试过http://localhost:123/home/test
。那也没用。
我在这里错过了什么?
如果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")
,则 http://localhost:123/home/test
url 可以达到 Test()
操作。如果要保留控制器级别属性,则将 TestAction()
的路由属性从 [Route("test")]
更改为 [Route("/test")]
将使 http://localhost:123/test
到达 TestAction()
.
如果仍然没有帮助,请使用 HomeController
.
的完整代码更新问题
我有一个带有 React 前端的 ASP.NET 核心应用程序。以下是我的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
来实现它,但它不起作用。我也试过http://localhost:123/home/test
。那也没用。
我在这里错过了什么?
如果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")
,则 http://localhost:123/home/test
url 可以达到 Test()
操作。如果要保留控制器级别属性,则将 TestAction()
的路由属性从 [Route("test")]
更改为 [Route("/test")]
将使 http://localhost:123/test
到达 TestAction()
.
如果仍然没有帮助,请使用 HomeController
.