asp.net-mvchttp-redirectviewresult

MVC Redirect from a ViewResult where cannot change to ActionResult


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.


Solution

  • 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;url=@Url.Action("Details", Model.Id)" />
        </head>
        <body></body>
    </html>