我有一个routerlink:
导致"http://localhost:54614/api/v0.1/ReportData/Account"
我想做的是写一个Routerlink-这将导致
@Html.RouteLink("Campaigns", "DefaultApi", new { controller = "Campaign", httproute = true })
我怎样才能做到这一点 ?
最佳答案
您不能使用$top
作为匿名类型的属性名称,因此您应该使用使用Routelink
的其他RouteValueDictionary
重载。
但是问题在于RouteLink
使用Uri.EscapeUriString
来转义路由值,因此使用以下代码:
@Html.RouteLink("Campaigns", "DefaultApi", new RouteValueDictionary
{
{ "controller", "Campaign"} ,
{ "httproute", true },
{ "$top", 20 }
})
将产生以下URL:
/api/Campaign?%24top=20
(请参见$
被编码为%24
)但是,使用非常非常肮脏的hack
Uri.UnescapeDataString
:@Html.Raw(Uri.UnescapeDataString(
@Html.RouteLink("Campaigns", "DefaultApi", new RouteValueDictionary
{
{ "controller", "Campaign"} ,
{ "httproute", true },
{ "$top", 20 }
}).ToHtmlString()))
您可以获得:
/api/Campaign?$top=20
关于c# - 将Odata查询参数添加到@ html.Routelink,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11004261/