Reputation: 677
I want to redirect from a ViewResult
, so that I can display a specific product detail when the search result is 1
instead of the product list page.
Other pages said to change the ViewResult
to an ActionResult
and to use the RedirectToAction
. But my problem is that my controller inherits from a third party control and my search method is set to override the same third party control method, which is a ViewResult
.
I am wondering if anyone has some suggestions on what I could do, if there is another way to redirect from a ViewResult
or if there is another way to handle the override of the third party controls search method to be an ActionResult
.
Upvotes: 2
Views: 2772
Reputation: 7848
You could just return a different View (without the redirect)
//in your action method
if( result.Count == 1 )
return View( "Product", result[0] );
or call the other action method directly (if they are in the same controller)
if( result.Count == 1 )
return YourActionDetails( result[0].Id /* params */ );
or, you could return a simple View that makes an automatic redirect client-side
// a "Redirect" view
@model Product
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Refresh" content="0;[email protected]("Details", Model.Id)" />
</head>
<body></body>
</html>
Upvotes: 2
Reputation: 46008
If you cannot change the return type of the action than you could use routing to route requests with 1 to a different action.
Just define another route and make sure that it's added to RouteCollection
before the default one.
Upvotes: 0