2011-10-20 12 views
7

El escape automático de Razor está jugando conmigo. Estoy construyendo una url para alimentar al método $ .load de jQuery:Navaja de fuerza para no escapar de una url

<script> 
$("#baz").load('@Url.Action("Method", new { foo=Model.Foo, bar=Model.Bar })'); 
<script> 

El problema es que la url está saliendo escapó en el guión emitida (& == &)

<script> 
$("#baz").load('Method?foo=Foo&amp;bar=Bar'); 
<script> 

Así MVC ahoga la solicitud diciendo que no se proporcionó el parámetro de barra.

He tratado de envolver la llamada en @ Html.Raw pero parece que todavía escapa de la url. De vuelta en el planeta aspx, me gustaría hacer <% = en lugar de <%: pero obviamente eso no es bueno aquí :). También traté de poner los parámetros en un objeto de datos para $ .load, pero eso parece forzar una publicación, no una obtención (y quiero obtener aquí).

Esto es algo que podría solucionar con el enrutamiento, pero este proyecto aún no está disponible, sigue bajando la funcionalidad sin interferir con el enrutamiento. Por otro lado, necesito poder enrutar esta URL, así que no quiero codificar la cadena de consulta.

¿Alguna idea?

+0

Puede responder a su propia pregunta, ¿Recibió un error? –

+0

Me dice que debo esperar 8 horas. – lamont

+0

Ahh, eso apesta. Deberías pasar eso a una respuesta cuando puedas entonces. –

Respuesta

14

que acaba de ejecutar una prueba, y el símbolo de unión no había sido codificado en mi prueba usando Html.Raw, así:

@Html.Raw(Url.Action("Method", new { foo = Model.Foo, bar = Model.Bar })) 
Cuestiones relacionadas