Redirect to Action by parameter mvc

后端 未结 4 1141
说谎
说谎 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:13

    Try this,

    return RedirectToAction("ActionEventName", "Controller", new { ID = model.ID, SiteID = model.SiteID });
    

    Here i mention you are pass multiple values or model also. That's why here i mention that.

    0 讨论(0)
  • 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.

    0 讨论(0)
  • 2021-02-13 03:27

    This should work!

    [HttpPost]
    public ActionResult RedirectToImages(int id)
    {
        return RedirectToAction("Index", "ProductImageManeger", new  { id = id });
    }
    
    [HttpGet]
    public ViewResult Index(int id)
    {
        return View(_db.ProductImages.Where(rs => rs.ProductId == id).ToList());
    }
    

    Notice that you don't have to pass the name of view if you are returning the same view as implemented by the action.

    Your view should inherit the model as this:

    @model <Your class name>
    

    You can then access your model in view as:

    @Model.<property_name>
    
    0 讨论(0)
  • 2021-02-13 03:33
    return RedirectToAction("ProductImageManager","Index", new   { id=id   });
    

    Here is an invalid parameters order, should be an action first
    AND
    ensure your routing table is correct

    0 讨论(0)
提交回复
热议问题