ASP.NET MVC - неправильное перенаправление, как отлаживать? - PullRequest
0 голосов
/ 28 мая 2010

Я застрял с проблемой перенаправления в проекте ASP.NET MVC. Я сопоставил таблицы через LINQtoSQL, и у каждого есть уникальный идентификатор в качестве первичного ключа.

Я использую функцию CREATE. Как правило, после добавления нового значения в таблицу SQL (что означает, что я нажал кнопку «Сохранить»), я хочу быть перенаправлен в сведения об этом недавно добавленном элементе.

Вот небольшой код, как я это делаю:

[AcceptVerbs(HttpVerbs.Post), Authorize]
public ActionResult Create(Item item) {
....
return RedirectToAction("Details", new { id = item.ItemID });

Проблема в том, что я никогда не перенаправляюсь в представление Подробности (у меня есть представление Details.aspx для элементов).

Когда я проверяю CallHierarchy в Visual Studio (2010 pro), иерархия действительно немного странная, например:

RedirectToAction (строка, объект)

  • Вызовы 'RedirectToAction'
    • Создать
      • Calls To Create (безрезультатно)
      • Calls From Create (методы созданного экземпляра. Оттуда я вернусь к «RedirectToAction» и «Calls to Create», «Calls From Create» и т. Д. И т. Д. - loop
    • Редактировать
  • Вызовы от 'RedirectToAction'
    • Не поддерживается

Я ищу некоторые инструменты или, более конкретно, «ноу-хау» (поскольку у VS, вероятно, есть некоторые инструменты) для отладки такого рода ситуаций.

PS: рутинг по умолчанию: "{controller} / {action} / {id}",

Спасибо

Ответы [ 3 ]

1 голос
/ 28 мая 2010

Проверьте свои маршруты с помощью Отладчика маршрутов Фила Хаака . Убедитесь, что используется правильный маршрут и вызывается правильный метод контроллера.

0 голосов
/ 28 мая 2010

Используйте отладчик для перехода к строке, где вызывается RedirectToAction. Убедитесь, что линия действительно ударил. Нажмите F5, чтобы продолжить после него.

Как только код выполнен, проверьте в Firebug в сети, если испущен 302. Посмотрите, что в деталях для запроса.

Если не выдается 302, я бы попробовал return RedirectToAction("Index"), просто чтобы узнать, неправильный ли вызов деталей или есть другая ошибка.

0 голосов
/ 28 мая 2010

Вам понадобится тот же контроллер

public ActionResult Details(int id)
{
    return View();
}

в дополнение к представлению Details.aspx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...