2011-11-30 12 views
8

W Jquery, muszę powiedzieć programowi, aby przejść do akcji EmployeeController i Empl. Jak mam to zrobić? Chcę prosty sposób to zrobić bez użycia ajax.MVC Jquery przejdź do działania kontrolera

+0

Co masz na myśli? Chcesz przejść do nowej strony? – Dismissile

+0

"Przejdź do"? Co się dzieje? Cała strona? Wywołanie AJAX? –

Odpowiedz

13
window.location.href = "/{controller}/{action}" //in your case, /employee/empl 

Działa to ze względu na trasach określonych w pliku Global.asax.cs. Sugeruję, abyś przeczytał, jak to działa, ponieważ jest to jedna z podstaw MVC ...

+0

lepsze wykorzystanie location.href = "cokolwiek"; – BigMike

+0

@BigMike Dodano ".href" do końca. Dzięki za informację zwrotną, prawdopodobnie masz rację, że być może jest jaśniejsza, ponieważ window.location jest obiektem. –

+0

i czy chcę przekazać parametr? –

0

Making założenia dotyczące URI struktura & routingu, ale:

window.location = '/employee/empl/';

+0

Tylko jeśli ma swoją trasę ustawioną na '/ controller/action' – Dismissile

+0

Tak. Dodano "zrzeczenie się" przed chwilą. – simshaun

5

Cóż, wszystkie dobre odpowiedzi do tej pory, ale używanie magicznego ciągu do budowania adresu URL daje mi tylko dreszcze. Wolę, aby dodać rozszerzenie tak:

public static string GetUrl(this HtmlHelper, helper, string Action, string Controller, object RouteValues) 
{ 
    UrlHelper Url = new UrlHelper(HttpContext.Current.Request.RequestContext); 
    return Url.Action(Action, Controller, RouteValues); 
} 

a następnie w moim użyć kodu JS:

location.href = '@Html.GetUrl("Action", "Controller", new { foo=Model.Foo })'; 

To bardziej spójne wewnętrznie dba o routingu, i daje mi centralny punkt, w którym robi paskudne rzeczy o adresy URL :)

dobrze, jeszcze jedno,

window.location = "whatever"; 

jest dobre, a prace , nadal

location.href = "whatever"; 

jest preferowany.

HTH

+0

Tam już jest pomocnikiem: '@ Url.Action (" Akcja "," Kontroler ", nowy {foo = Model.bar})' –

+0

@KristofClaes: tak, jest to oczywiście i jak widać jest używany wewnętrznie, własny pomocnik ma po prostu scentralizowany sposób, w jaki mogę robić nieprzyjemne rzeczy na adresach URL, idealnie nie ma potrzeby tego w idealnym świecie, ale czasami wymagania są tak zabawne, że musiałem uciekać się do tego. Oczywiście usunąłem moją logikę z przykładowego kodu, publikując fałszywkę mojego prawdziwego pomocnika :) – BigMike

+0

Kolejny minus ... Co się dzieje, gdy ten skrypt przeprowadza relokację nie jest w widoku (tak jak nie powinno być) ? Nie możesz używać swoich metod pomocniczych. Zamiast tego powinno być całkowicie jasne, aby po prostu przekierować na trasę. –

2

Przyjęta odpowiedź nie działa, gdy aplikacja jest publikowana. musiałem użyć

window.location.href='@Url.Action("ActionName","ControllerName")' 

Nadzieja pomaga

Powiązane problemy