RedirectToAction вообще не перенаправляет - PullRequest
1 голос
/ 01 апреля 2012

Я использую RedirectToAction для перенаправления после сообщения на другой контроллер, и он работает.поэтому я попытался перенаправить на другое действие в том же контроллере, и он тоже не работает.

    public ActionResult finalize(int id)
    {
        Meeting meeting = db.Meetings.Find(id);
        meeting.meetingStatus = "finalized";
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    public ActionResult Create()
    {          
        return View();
    } 

    [HttpPost]
    public ActionResult Create(Meeting meeting)
    {
        if (ModelState.IsValid)
        {
            db.Meetings.Add(meeting);
            db.SaveChanges();
        //    return RedirectToAction("Invitation");  
            return (RedirectToAction("finalize", new { id = meeting.meetingID}));
        }

        return View(meeting);
    }

1 Ответ

0 голосов
/ 01 апреля 2012

вы не можете сделать 2 перенаправления в одном вызове, перенаправление просто возвращает код перенаправления http на другую страницу, перенаправление 2 раза просто не работает, не относитесь к методам действия как к обычным методам, они отличаются

например, когда вы запрашиваете страницу example.com/controller/action

action будет выполнено и, например, имеет возвращаемое значение с RedirectToAction("NotFound")

что произойдет в этом сценарии

action тело будет выполнено, и возвращаемое значение отправит клиенту заголовок http 302, который говорит, что ваш новый пункт назначения - /controller/NotFound

так RedirectToAction просто вернуть клиенту код http, чтобы другой метод не вызывался


Обновление

я ошибся, я проверил с помощью fiddler2 , вы можете многократно использовать перенаправление на действия, что произойдет, когда сервер будет отправлять несколько заголовков перенаправления http для каждого

Я пришел к такому быстрому выводу, потому что не думал, что многократное перенаправление - это правильный способ сделать это, поэтому после того, как я попробовал это, я могу сказать, что это работает, просто создайте новый проект, чтобы увидеть, где именно проблема, или используйте инструмент вроде fiddler2

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