问题描述
我有 Asp.net core 3.1 目标应用程序。所以基本上 HomeController
我们正在使用与视图相关的操作触发器并且它工作正常。但是我在 HomeController 中有另一个名为 PostData
的 Get 方法,但它没有得到trigger.and 总是返回 Index 方法 View html 作为响应。
获取网址:http://localhost:9062/Home/PostData?detail=test
家庭控制器:
public class HomeController : Controller
{
public HomeController(StatelessServiceContext context)
{
}
public async Task<IActionResult> Index()
{
return View();
}
[HttpGet]
public async Task<string> PostData(string detail)//not getting call
{
return "PostData";
}
}
Startup.cs
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",template: "{controller=Home}/{action=Index}/{id?}");
routes.MapSpaFallbackRoute(
name: "spa-fallback",defaults: new { controller = "Home",action = "Index" });
});
我已经尝试过但还没有解决这个问题?
提前致谢。
解决方法
在您的 Startup.cs 中
app.UseMvc(configureRoutes => {
configureRoutes.MapRoute(name: "default",template: "{controller=Login}/{action=Login}/{id?}");
});
如您所见,您的操作方法需要一个 id。将您的字符串详细信息更改为字符串 id,它应该可以正常工作。
,http://localhost:9062/Home/PostData?detail=test
首先,请检查您的应用程序配置和请求 URL,这是一个 http
请求,而不是 https
,您是否将您的应用程序更改为使用 Http
?如果没有,请尝试更改请求 URL,如下所示:
https://localhost:9062/Home/PostData?detail=test
第二,由于您使用的是 MapSpaFallbackRoute() 方法,您的应用程序是一个 SPA 应用程序,对吗?我创建了一个 SPA 应用程序并检查了您的代码(添加 Home Controller 和 PostData 操作,然后使用 [HttpGet()]
或 [HttpGet("postdata")]
),一切正常,请求 url 如下所示:https://localhost:44332/Home/PostData?detail=test
或https://localhost:44332/postdata?detail=test
。
我建议您可以先尝试删除 SPA 路由,然后检查 MVC 路由是否正常工作。如果还是不行,您能否创建一个关于它的新示例并通过 Github 或 OneNote 共享它,以便我们可以复制它并帮助您修复它。