2011-09-07 5 views
26

Próbuję nawiązać połączenie ajax tak:Jak przekazać prawidłowy Url.Action do metody JQuery bez dodatkowych problemów i problemów?

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

Niestety, robi to interpretować jako:

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

Jak widać, & .a.m.p .; jest tam zamiast ampersand dla querystring (wstawiłem kropki ponieważ, duh, web interpretuje to jako ampersand .., wpadniesz na pomysł)

Próbowałem Url.Decode i to nic nie robiło. Nie jestem pewien, czy rozumiem problem, więc nie mam pojęcia, jak to naprawić.

+1

Spróbuj @ Html.Raw (Url.Action ("_ AgentStatesGrid", "AgentStates", new {ProjectID = Model.SelectedProject, siteid = Model.SelectedSite})) – Steve

+1

Zrobili to Steve! Zrób odpowiedź, więc mogę zaznaczyć to proszę :-) –

Odpowiedz

52

Spróbuj

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

Dzięki

+9

Jestem nieco rozczarowany, że jest to wymagane. Nie mogę pomóc, ale myślę, że zwykły przypadek użycia Url.Action jest linkiem, co (technicznie) wymaga Html.Raw w prawie wszystkich przypadkach (przypadek jednego parametru działa poprawnie jest bardziej przypadkowo niż projekt) . Ale myślę, że ludzie borykali się z tym od 2011 roku, więc teraz zmiana gunny jest teraz ... –

+1

Nie można się zgodzić więcej. Powinien kodować każdy parametr, a nie wynikowy adres URL. – ptutt

+6

Kodowanie znaku ampersand? Co oni sobie myśleli??? –

Powiązane problemy