Use RedirectToAction without passing query string parameters/route values

7.5k views Asked by At

I have a "Thingy" controller for that looks like:

[HttpPost]
public ActionResult DeleteConfirmed(long? id) {
    // <Validate ID, delete associated records>
    return RedirectToAction("Index", "Thingy");
}

However, RedirectToAction keeps having its route values populated with the id from the parameters, whereas I want it to leave id as null so it redirects to www.mywebsite.com/Thingy instead of www.mywebsite.com/Thingy/1

In fact, I can visit www.mywebsite.com/Thingy directly and it works as expected.

I have tried:

RedirectToAction("Index", "Thingy")
RedirectToAction("Index", "Thingy", new { })
RedirectToAction("Index", "Thingy", new { id = (long?)null })

The last is particularly amusing because it redirects to www.mywebsite.com/Thingy?id=1 where as the others redirect to www.mywebsite.com/Thingy/1.

1

There are 1 answers

1
Erik Philips On BEST ANSWER

Add the following before your RedirectToAction() in your first example:

RouteData.Values.Remove("id");

I have a feeling the route values you specify are being merged with the original route values.