Redirect to Action by parameter mvc

后端 未结 4 1140
说谎
说谎 2021-02-13 02:58

I want to redirect to an action in other Controller but it doesn\'t work here\'s my code in ProductManagerController:

[HttpPost]
public ActionResult RedirectToIm         


        
4条回答
  •  遇见更好的自我
    2021-02-13 03:20

    This error is very non-descriptive but the key here is that 'ID' is in uppercase. This indicates that the route has not been correctly set up. To let the application handle URLs with an id, you need to make sure that there's at least one route configured for it. You do this in the RouteConfig.cs located in the App_Start folder. The most common is to add the id as an optional parameter to the default route.

    public static void RegisterRoutes(RouteCollection routes)
    {
        //adding the {id} and setting is as optional so that you do not need to use it for every action
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
    

    Now you should be able to redirect to your controller the way you have set it up.

    [HttpPost]
    public ActionResult RedirectToImages(int id)
    {
        return RedirectToAction("Index","ProductImageManager", new { id });
    
        //if the action is in the same controller, you can omit the controller:
        //RedirectToAction("Index", new { id });
    }
    

    In one or two occassions way back I ran into some issues by normal redirect and had to resort to doing it by passing a RouteValueDictionary. More information on RedirectToAction with parameter

    return RedirectToAction("Index", new RouteValueDictionary( 
        new { controller = "ProductImageManager", action = "Index", id = id } ) 
    );
    

    If you get a very similar error but in lowercase 'id', this is usually because the route expects an id parameter that has not been provided (calling a route without the id /ProductImageManager/Index). See this so question for more information.

提交回复
热议问题