Agregue el parámetro de consulta de Odata a @html.Routelink

Tengo un enlace de ruta :

@Html.RouteLink("Campaigns", "DefaultApi", new { controller = "Campaign", httproute = true })

eso resulta en "http://localhost:54614/api/v0.1/ReportData/Account"

lo que quiero hacer es escribir un enlace de ruta - eso daría como resultado

"http://localhost:54614/api/v0.1/ReportData/Account/?$top=20"

Cómo puedo hacer eso ?

preguntado el 12 de junio de 12 a las 21:06

1 Respuestas

no puedes usar $top como un nombre de propiedad en un tipo anónimo por lo que debe utilizar un diferente Routelink sobrecarga que utiliza RouteValueDictionary.

Pero el problema es que RouteLink usos Uri.EscapeUriString para escapar de los valores de ruta usando el siguiente código:

@Html.RouteLink("Campaigns", "DefaultApi", new RouteValueDictionary
                                              {
                                                  { "controller", "Campaign"} ,
                                                  { "httproute", true },
                                                  { "$top", 20 }
                                              })

Producirá esta url: /api/Campaign?%24top=20 (Véase el $ fue codificado para %24)

Sin embargo, usar un truco muy sucio a saber Uri.UnescapeDataString:

@Html.Raw(Uri.UnescapeDataString(
    @Html.RouteLink("Campaigns", "DefaultApi", new RouteValueDictionary
                                        {
                                            { "controller", "Campaign"} ,
                                            { "httproute", true },
                                            { "$top", 20 }
                                        }).ToHtmlString()))

Puedes obtener: /api/Campaign?$top=20

Respondido el 12 de junio de 12 a las 22:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.