2011-09-07 3 views
26

estoy tratando de hacer una llamada AJAX, así:¿Cómo paso la correcta Url.Action a un método JQuery sin problemas adicionales?

$('#Grid').load('@Url.Action("_AgentStatesGrid", "AgentStates", new { projectId = Model.SelectedProject, siteId = Model.SelectedSite })', null, refreshComplete); 

Por desgracia, se interpreta como esto:

$('#Grid').load('/AgentStates/_AgentStatesGrid?projectId=179&siteId=0', null, refreshComplete); 

Como se puede ver, el & .a.m.p .; está allí en lugar del signo A para la cadena de consulta (pongo los puntos porque, duh, la web lo interpreta como un símbolo comercial ..., entiendes la idea)

Probé Url.Decode y no hice nada. No estoy seguro de entender el problema, así que no tengo ni idea de cómo solucionarlo.

+1

Trate @ Html.Raw (Url.Action ("_ AgentStatesGrid", "AgentStates", nueva {projectId = Model.SelectedProject, SiteID = Model.SelectedSite})) – Steve

+1

¡Eso lo hizo Steve! Hazlo una respuesta para que pueda marcarlo, por favor :-) –

Respuesta

52

Trate

@Html.Raw(Url.Action("_AgentStatesGrid", "AgentStates", new { projectId = Model.SelectedProject, siteId = Model.SelectedSite })) 

Gracias

+9

Estoy un poco decepcionado de que esto sea necesario. No puedo evitar pensar que el caso de uso habitual para Url.Action es como un enlace, por lo que (técnicamente) requiere Html.Raw en casi todos los casos (el caso de un solo parámetro que funciona correctamente es más accidental que de diseño) . Pero creo que la gente ha estado luchando con esto desde 2011, por lo que nuthin gunna 'cambiar ahora ... –

+1

No podría estar más de acuerdo. Debe codificar cada parámetro, no la url resultante. – ptutt

+6

¿Codificando el ampersand? ¿¿¿Que estaban pensando??? –

Cuestiones relacionadas