MVC Redirect из ViewResult, где нельзя изменить на ActionResult
Я хочу перенаправить с ViewResult
, так что я могу отобразить конкретные детали продукта, когда результат поиска 1
вместо страницы со списком товаров.
Другие страницы сказали, чтобы изменить ViewResult
для ActionResult
и использовать RedirectToAction
, Но моя проблема в том, что мой контроллер наследуется от стороннего элемента управления, и мой метод поиска настроен так, чтобы переопределять тот же сторонний метод управления, который является ViewResult
,
Мне интересно, есть ли у кого-нибудь предложения о том, что я мог бы сделать, если есть другой способ перенаправить с ViewResult
или если есть другой способ обработать переопределение метода поиска сторонних элементов управления, чтобы быть ActionResult
,
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 на другое действие.
Просто определите другой маршрут и убедитесь, что он добавлен в RouteCollection
перед по умолчанию.