I want to redirect to an action in other Controller but it doesn't work here's my code in ProductManagerController:
[HttpPost]
public ActionResult RedirectToImages(int id)
{
return RedirectToAction("Index","ProductImageManeger", new { id=id });
}
and this in my ProductImageManagerController:
[HttpGet]
public ViewResult Index(int id)
{
return View("Index",_db.ProductImages.Where(rs=>rs.ProductId == id).ToList());
}
It redirect to ProductImageManager/Index without parameter very well(no error) but with above code i get this:
The parameters dictionary contains a null entry for parameter 'ID' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ViewResult Index(Int32)' in '...Controllers.ProductImageManagerController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters
For redirect in the same controller you don't need to specify the controller. Not sure if you need to have the parameter nullable to do this redirect or if we have it as nullable because we need to in another sence, but this is from a working project:
EDIT
Calling a different controller, you might need to use a RouteValueDictionary:
The example you provided should work if your RouteConfig is configured for it, so you should check it so that you have it set up correctly. Check this stackoverflow question and answers for more information.
EDIT 2:
By the comment from @Mohammadreza, the error was in the RouteConfig. To let the application handle URLs with an id, you need to make sure that the Route is configured for it. You do this in the RouteConfig.cs located in the App_Start folder.
Try this,
Here i mention you are pass multiple values or model also. That's why here i mention that.
This should work!
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:
You can then access your model in view as:
Here is an invalid parameters order, should be an action first
AND
ensure your routing table is correct