2010-03-29 14 views
13

Decir que tengo:¿Cómo puedo redirigir dentro de una función ViewResult o ActionResult?

public ViewResult List() 
{ 
    IEnumerable<IModel> myList = repository.GetMyList(); 
    if(1 == myList.Count()) 
    { 
     RedirectToAction("Edit", new { id = myList.Single().id }); 
    } 

    return View(myList); 
} 

Dentro de esta función, puedo comprobar si hay sólo un elemento de la lista, si no es que me gustaría volver a dirigir directamente al controlador que maneja el elemento de lista, de lo contrario, quiere mostrar la Vista de lista.

¿Cómo puedo hacer esto? Simplemente agregando un RedirectToAction no funciona: se golpea la llamada, pero VS simplemente lo pasa e intenta devolver la Vista en la parte inferior.

Respuesta

21

Necesita return RedirectToAction en lugar de simplemente llamar al método RedirectToAction. Además, su método deberá devolver un ActionResult es un tipo de devolución compatible con ViewResult y RedirectToRouteResult.

public ActionResult List() 
{ 
    IEnumerable<IModel> myList = repository.GetMyList(); 
    if(1 == myList.Count()) 
    { 
     return RedirectToAction("Edit", new { id = myList.Single().id }); 
    } 

    return View(myList); 
} 
+2

Eso funcionó después de cambiar la función return type a ActionResult, cheers! – Pete

+0

¡He estado golpeando mi cabeza contra el escritorio toda la mañana tratando de entender por qué RedirectToAction() no funcionaba en mi controlador! ¡Tan sencillo! –

Cuestiones relacionadas