ASP.NET Core 3.1 MVC中如何用a标签完整传递QueryString?
在.NET Core 3.1中传递完整查询字符串到另一页面的方法
你的代码报错是因为asp-route的用法错误,它用于绑定单个路由参数,而非直接传递整个查询字符串。以下是两种可行的解决方法:
方法1:直接拼接href属性
通过Url.Action生成目标Action的基础URL,再拼接当前请求的查询字符串:
<a href="@Url.Action("VerifiedAll")@Context.Request.QueryString.Value" class="btn btn-manage">Verified All</a>
这种方式简单直接,若当前无查询字符串,也不会生成多余的?符号。
方法2:使用asp-all-route-data(更安全)
先将查询字符串转换为字典,再通过asp-all-route-data自动绑定所有参数,框架会处理参数编码:
@{ // 将查询参数转换为字典 var queryDict = Context.Request.Query.ToDictionary(kv => kv.Key, kv => kv.Value.ToString()); }
然后在a标签中使用:
<a asp-action="VerifiedAll" asp-all-route-data="queryDict" class="btn btn-manage">Verified All</a>
原代码错误原因
asp-route的正确用法是指定单个路由参数名(如asp-route-id="123"),直接传入整个查询字符串会让路由框架无法解析,因此无法生成有效的href属性。
内容的提问来源于stack exchange,提问作者LairdLuca
相关产品推荐
相关产品推荐

