2011-11-30 32 views
8

En Jquery, tengo que indicarle al programa que vaya a la acción EmployeeController y Empl. ¿Cómo le digo que haga esto? Quiero una forma simple de hacer esto sin usar ajax.MVC Jquery vaya a la acción del controlador

+0

¿Qué quiere decir? ¿Quieres navegar a una página nueva? – Dismissile

+0

"Ir a"? ¿A qué ir? Toda la página? Una llamada AJAX? –

Respuesta

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

Esto funciona debido a las rutas especificadas en el archivo Global.asax.cs. Le sugiero que lea sobre cómo funciona esto, ya que es uno de los fundamentos de MVC ....

+0

use mejor location.href = 'whatever'; – BigMike

+0

@BigMike Agregó ".href" hasta el final. Gracias por los comentarios, probablemente tengas razón de que es quizás más claro ya que window.location es un objeto. –

+0

y si quiero pasar un parámetro? –

0

hacer suposiciones acerca de la URI estructura & enrutamiento, pero:

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

+0

Solo si tiene su ruta configurada para ser '/ controller/action' – Dismissile

+0

Sí. Se agregó un "descargo de responsabilidad" hace unos momentos. – simshaun

5

Bueno, toda buena respuesta hasta el momento, pero el uso de una cadena mágica para construir URL solo me da escalofríos. Yo prefiero añadir una extensión de esta manera:

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); 
} 

y luego en mi código js uso:

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

Es más coherente, internamente se preocupa de enrutamiento, y me da un punto centralizado donde hacer las cosas desagradables sobre URL :)

bueno, una cosa más,

window.location = "whatever"; 

es bueno y obras , todavía

location.href = "whatever"; 

es preferible.

HTH

+0

Ya hay_es un ayudante para eso: '@ Url.Action (" Acción "," Controlador ", nuevo {foo = Modelo.bar})' –

+0

@KristofClaes: sí, hay, por supuesto, y como pueden ver se usa internamente, el propio ayudante es solo para tener una forma centralizada en la que puedo hacer cosas desagradables en las URL, idealmente no hay necesidad de eso en el mundo ideal, pero a veces los requisitos son tan divertidos que tuve que recurrir a esto. Por supuesto que eliminé mi lógica en el código de muestra, publicando un simulacro de mi verdadero ayudante :) – BigMike

+0

Otro inconveniente ... ¿Qué sucede cuando este script que hace la reubicación no está en una vista (como no debería ser)? ? No puedes usar tus métodos de ayuda. En su lugar, debería estar perfectamente claro simplemente redirigir a una ruta. –

2

respuesta aceptada no funciona cuando está publicada la aplicación. tuve que usar

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

creo que sirve

Cuestiones relacionadas