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 перед по умолчанию.

Другие вопросы по тегам