MVC从ViewResult重定向,无法更改为ActionResult

时间:2012-08-10 15:26:46

标签: asp.net-mvc redirect viewresult

我想从ViewResult重定向,以便在搜索结果为1而不是产品列表页面时显示特定的产品详细信息。

其他网页表示要将ViewResult更改为ActionResult并使用RedirectToAction。但我的问题是我的控制器继承了第三方控件,我的搜索方法设置为覆盖相同的第三方控件方法,即ViewResult

我想知道是否有人对我能做什么有什么建议,如果有另一种方法从ViewResult重定向,或者是否有另一种方法来处理第三方控件搜索方法的覆盖是ActionResult

2 个答案:

答案 0 :(得分:2)

可以只返回一个不同的视图(没有重定向)

//in your action method
if( result.Count == 1 )
    return View( "Product", result[0] );

或直接调用其他操作方法(如果它们在同一个控制器中)

if( result.Count == 1 )
    return YourActionDetails( result[0].Id /* params */ );

或者,您可以返回一个简单的View,它可以自动重定向客户端

// 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>

答案 1 :(得分:0)

如果您无法更改操作的返回类型,则可以使用路由将带有1的请求路由到不同的操作。

只需定义另一条路线,并确保在默认路线之前将其添加到RouteCollection