我有 routelink :
@Html.RouteLink("Campaigns", "DefaultApi", new { controller = "Campaign", httproute = true })
会产生"http://localhost:54614/api/v0.1/ReportData/Account"
我想要做的是写一个 Routelink - 这将导致
"http://localhost:54614/api/v0.1/ReportData/Account/?$top=20"
我该怎么做?
答案 0 :(得分:1)
您不能在匿名类型中使用$top
作为属性名称,因此您应使用Routelink
使用RouteValueDictionary
的{{1}}重载。
但问题是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