Используйте RedirectToAction без передачи параметров строки запроса / значений маршрута

У меня есть "Thingy" контроллер, который выглядит так:

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

Тем не мение, RedirectToAction его значения маршрута заполняются идентификатором из параметров, в то время как я хочу, чтобы он оставлял идентификатор как ноль, поэтому он перенаправляет на www.mywebsite.com/Thingy вместо www.mywebsite.com/Thingy/1

На самом деле, я могу посетить www.mywebsite.com/Thingy напрямую и работает как положено.

Я пытался:

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

Последнее особенно забавно, потому что оно перенаправляет на www.mywebsite.com/Thingy?id=1 куда остальные перенаправляют www.mywebsite.com/Thingy/1,

1 ответ

Решение

Добавьте следующее перед вашим RedirectToAction() в вашем первом примере:

RouteData.Values.Remove("id");

У меня такое ощущение, что указанные вами значения маршрута объединяются с исходными значениями маршрута.

Другие вопросы по тегам