2010-05-13 24 views
5

Tengo una función de vacío privada para alguna validación. Si mi validación falla, me gustaría redireccionar a otro ActionResult y matar el proceso para el ActionResult que se estaba utilizando. Response.Redirect ("controllerName") no ayuda. ¿Algunas ideas?¿Puede Response.Redirect funcionar en una función MVC 2 void privada?

[Accept(HttpVerbs.Post)] 
public ActionResult NerdDinner(string Name) 
{ 
    testName(Name); 
    ... 
    Return RedirectToAction("ActionResultAAA"); 
} 

private void testName(string name) 
{ 
    if(name == null) 
    { 
     //Response.Redirect("ActionResultBBB"); 
    } 
} 

Respuesta

7

Puede utilizar Response.Redirect donde quiera, pero es necesario para proporcionar una adecuada (relativa o abolute) URL, no sólo un nombre de acción. Sin embargo, sería preferible seguir el patrón MVC y hacer algo como esto:

[Accept(HttpVerbs.Post)] 
public ActionResult NerdDinner(string Name) 
{ 
    ActionResult testResult = testName(Name) 
    if (testResult != null) return testResult; 
    ... 
    return RedirectToAction("ActionResultAAA"); 
} 

private ActionResult testName(string name) 
{ 
    if(name == null) 
    { 
     return RedirectToAction("ActionResultBBB"); 
    } 

    return null; 
} 
+4

es decir, puede hacerlo, pero no es así. – Will

+1

En el método privado, ¿necesita devolver algo si el nombre no es nulo? – Swoop

+0

@Swoop: lo tienes; error arreglado –

Cuestiones relacionadas