2010-05-13 3 views
5

J'ai une fonction vide privée pour une validation. Si ma validation échoue, je souhaite rediriger vers un autre objet ActionResult et arrêter le processus pour le paramètre ActionResult utilisé. Response.Redirect ("controllerName") n'aide pas. Des idées?Peut Response.Redirect travail dans un privé MVC 2 Fonction?

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

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

Répondre

7

Vous pouvez utiliser Response.Redirect où vous le souhaitez, mais vous devez fournir une bonne (relative ou abolute) URL, pas seulement un nom d'action. Cependant, il serait préférable de s'en tenir au modèle MVC et de faire quelque chose comme ceci:

[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

En d'autres termes, vous pouvez le faire, mais ne le faites pas. – Will

+1

Dans la méthode privée, avez-vous besoin de retourner quelque chose si le nom n'est pas null? – Swoop

+0

@Swoop: vous avez raison; bug réparé –