2011-05-03 22 views
37

Estoy tratando de generar una url para una acción MVC 3 dentro del entorno javascript (en un archivo cshtml).MVC3 Url.Action generación de querystring

<script type="text/javascript"> 
    ... 
    var src = "@Url.Action("GetProductImage", new { productId = Model.Product.Id, pos = 1, size = 0 })"; 
    $(document.createElement("img")).attr("src", src); 
    ... 
</script> 

Ahora esto funciona casi bien, mi problema es que la querystring se está escapando. En lugar de:

"/Products/GetProductImage?productId=1&pos=0&size=0" 

que genera:

"/Products/GetProductImage?productId=1&amp;pos=0&amp;size=0" 

así que mi acción no recibe llamados.

Ahora sé que puedo hacer mi propia función de ayuda Url personalizada, pero me preguntaba si puedo usar esta u otra ayuda incorporada para obtener la URL sin guardar.

Gracias de antemano, G.

Respuesta

58
<script type="text/javascript"> 
    var src = "@Html.Raw(Url.Action("GetProductImage", new { productId = Model.Product.Id, pos = 1, size = 0 }))"; 
    $(document.createElement("img")).attr("src", src); 
</script> 
+1

por supuesto, cómo no pensé en eso ... muchas gracias – egyedg

+2

¡Gracias! Tuve el mismo problema :) Aunque debería ser @HtmlRaw (Url.Action (/*...*/)) en lugar de @HtmlRaw (HtmlUrl.Action (/*...*/)) – lethek

4
var src = "@Html.Raw(Url.Action("GetProductImage", new { productId = Model.Product.Id, pos = 1, size = 0 }))"; 

Url.Action trabajaron para mí no HtmlUrl.Action

disfrutar!

Cuestiones relacionadas