#c# #asp.net-mvc #asp.net-mvc-3
#c# #asp.net-mvc #asp.net-mvc-3
Вопрос:
У меня есть следующий код, который возвращается в конце некоторых моих действий в моих контроллерах. Вместо того, чтобы повторять один и тот же код много раз, я хотел бы его инкапсулировать:
if (Session["CurrentUrl"] != null) {
var ip = new Uri((string)Session["CurrentUrl"]);
var ipNoPort = string.Format("{0}://{1}/{2}", ip.Scheme, ip.Host, ip.PathAndQuery);
return Redirect(ipNoPort);
}
return Home();
В одном я не уверен, так это в том, как я мог бы обрабатывать возвращаемые аргументы. У кого-нибудь есть какие-либо предложения о том, что я мог бы сделать?
Комментарии:
1. Как насчет использования базового класса контроллера?
Ответ №1:
Вы хотите посмотреть на создание пользовательского фильтра действий. Затем вы можете применить этот повторно используемый фильтр к любому методу действия, которому требуется такое поведение. Вы можете применить их до или после запуска метода.
Посмотрите на эту фильтрацию действий в ASP.NET Приложения MVC
Ответ №2:
Вы должны возвращать RedirectResult
. Вы всегда должны возвращать что-то производное от ActionResult
, иначе вы создадите потенциальные проблемы.
Вы могли бы расширить этот класс, чтобы удовлетворить ваши потребности, если вы хотите инкапсулировать некоторые пользовательские функции.
Комментарии:
1. Я использую код в конце действия edit POST, чтобы вернуть пользователя к строкам данных, чтобы он мог выбрать другую строку для редактирования. В этом случае у меня действительно нет результата для возврата.