将 Odata 查询参数添加到@html.路由链接
本文关键字:@html 路由 链接 添加 Odata 查询 参数 | 更新日期: 2023-09-27 18:36:53
我有一个路由链接:
@Html.RouteLink("Campaigns", "DefaultApi", new { controller = "Campaign", httproute = true })
这会导致"http://localhost:54614/api/v0.1/ReportData/Account"
我想做的是编写一个路由链接 - 这将导致
"http://localhost:54614/api/v0.1/ReportData/Account/?$top=20"
我该怎么做?
您
不能将$top
用作匿名类型的属性名称,因此您应该使用使用 RouteValueDictionary
的不同Routelink
重载。
但问题是RouteLink
使用Uri.EscapeUriString
来转义路由值,因此使用以下代码:
@Html.RouteLink("Campaigns", "DefaultApi", new RouteValueDictionary
{
{ "controller", "Campaign"} ,
{ "httproute", true },
{ "$top", 20 }
})
将生成此网址:/api/Campaign?%24top=20
(请参阅$
被编码为%24
)
但是使用一个非常非常肮脏的黑客,即Uri.UnescapeDataString
:
@Html.Raw(Uri.UnescapeDataString(
@Html.RouteLink("Campaigns", "DefaultApi", new RouteValueDictionary
{
{ "controller", "Campaign"} ,
{ "httproute", true },
{ "$top", 20 }
}).ToHtmlString()))
您可以获得: /api/Campaign?$top=20