2012-08-10 50 views
2

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

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

我想知道如果有人对我可以做什么有一些建议,如果有另一种方式从ViewResult重定向,或者如果有另一种方法来处理第三方控件搜索方法的重写为ActionResult

+0

您需要发布您拥有的内容,但ActionResult与ViewResult和RedirectToRouteResult兼容。看到这个问题http://stackoverflow.com/questions/2538469/how-do-i-redirect-within-a-viewresult-or-actionresult-function – Brian 2012-08-10 15:30:28

回答

2

可以只是返回不同的视图(无重定向)

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

,或者直接拨打对方的操作方法(如果他们是在同一个控制器)

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

,或者你可以返回一个简单的视图,使自动重定向客户端

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

感谢您的答复。不幸的是,详细信息页面会返回一个也被设置为覆盖的操作结果。我可以看看最后的选择。 – user1408767 2012-08-10 18:40:48

0

如果您不能更改操作的返回类型,那么您可以使用路由将具有1的请求路由到其他操作。

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