views:

67

answers:

1

I have a private void function set for some validation. Should my validation fail, I would like to redirect to another ActionResult and kill the process for the ActionResult that was being used. Response.Redirect("controllerName") does not help. Any ideas?

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

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

You can use Response.Redirect wherever you like but you need to provide a proper (relative or abolute) URL, not just an action name. However, it would be preferable to stick to the MVC pattern and do something like this:

[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;
}
Daniel Renshaw
i.e., you can do it, but don't.
Will
In the private method, do you need to return anything if the name is not null?
Swoop
@Swoop: right you are; bug fixed
Daniel Renshaw