Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET核心ASP路由-*帮助程序未正确呈现链接_C#_Asp.net Mvc_Asp.net Core - Fatal编程技术网

C# ASP.NET核心ASP路由-*帮助程序未正确呈现链接

C# ASP.NET核心ASP路由-*帮助程序未正确呈现链接,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我有以下路线: [HttpGet("symbols/{symbol}/{slug}/news")] public async Task<IActionResult> News( [FromRoute] string symbol, [FromRoute] string slug, [FromQuery] int perPage, [FromQuery] int page) {

我有以下路线:

    [HttpGet("symbols/{symbol}/{slug}/news")]
    public async Task<IActionResult> News(
        [FromRoute] string symbol,
        [FromRoute] string slug,
        [FromQuery] int perPage,
        [FromQuery] int page)
    {
        ...
    }
但是,这会导致以符号和slug作为查询参数不正确地呈现链接:
symbols/news?symbol=aapl&slug=aapl inc&page=11&perPage=5


如何将此链接呈现为
symbols/aapl/apple inc/news?page=2&perPage=20

以下是一种解决方法:

app.UseEndpoints(endpoints =>
{               
    endpoints.MapControllerRoute(
        name: "default1",
        pattern: "{controller=Home}/{symbol?}/{slug?}/{action=Index}");
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
});
更新:


我找到了另一种方法,不要使用
asp路由页面
。它似乎与razor页面中的
asp页面
之类的内容冲突,换成
asp路由页面
就可以了。

Hi@Marlon,这在我的项目中对我很有效。你的asp.net核心版本是什么?你能分享你的启动吗?cs?@Rena Hi Rena谢谢。我正在使用.NETCore3.1。您希望看到startup cs的哪一部分?endpoints.MapRazorPages();MapControllerRoute(名称:“默认”,模式:“{controller=Home}/{action=Index}/{id?}”);请检查是否没有具有相同名称的其他操作。
News
。我添加了以下代码:
[HttpPost(“symbols/News”)]public async Task News(string symbol,string slug)
。然后razor视图中的url将呈现与您相同的url。只需更改此post操作的操作名称,你会得到你想要的url。@Rena我做了一个新项目,它也能正常工作。在我真正的项目中,我没有其他与HttpPost同名的操作。当我创建一个没有分页参数
page
perPage
的链接时,新闻链接就起作用了。添加这些分页参数后,所有内容都将成为查询的一部分。。。没有意义。不仅仅是“发布行动”,你还有“获取行动”的相同名称吗?谢谢。这就解决了问题。好像是一只虫子。一只老虫子()
app.UseEndpoints(endpoints =>
{               
    endpoints.MapControllerRoute(
        name: "default1",
        pattern: "{controller=Home}/{symbol?}/{slug?}/{action=Index}");
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
});