MVC 5 - RedirectToAction Not Redirecting

2019-06-16 05:38发布

问题:

Hi I have a problem with my RedirectToAction not redirecting. My code successfully hits a breakpoint placed on the Redirect so I can confirm it is being called. Nothing seems to happen however.

I have tried looking at the network traffic in Chrome and there doesn't seem to be anything obvious. I must be missing something simple!

    //
    // POST: /Blog/CreateBlog
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult CreateBlog(BlogViewModel model)
    {
        var userId = User.Identity.GetUserId();
        model.UserId = userId;

        if (ModelState.IsValid && model.UserId != null)
        {
            Mapper.CreateMap<BlogViewModel, Blog>();
            if (_blogProcess.CreateBlog(Mapper.Map<BlogViewModel, Blog>(model)))
            {
                RedirectToAction("Index", "Blog");
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }

回答1:

try

return RedirectToAction("Index", "Blog");


回答2:

In addtion to Nalaka526's answer: if we look into the documentation for RedirectToAction we can see that it's an instance method of the Controller class which has RedirectToRouteResult as return type, which derives from ActionResult which indicates that we have to return it, just like we return View and PartialView for example.



回答3:

  1. If you are using @using(Html.BeginForm("Index","Blog"..) on the view page then

    public ActionResult CreateBlog(BlogViewModel model)
    {
        ....
        return RedirectToAction("Index", "Blog") 
    } 
    

    should work.

  2. If you are using Ajax.BeginForm, then you need to redirect to a new action/url from javascript OnSuccess event. sample code for your view

    @using (Ajax.BeginForm("Index", "Blog", new AjaxOptions { HttpMethod = "post" , OnSuccess="RedirectFunction"}
    
    function RedirectFunction(data)
    {
        window.location.href = “Index”;
    }
    

Hope this helps.