ASP.NET MVC получает текущий хост
Как получить хост без использования Request
? Этот код может быть помещен в контроллер:
return String.Equals(this.Request.Url.Host, absoluteUri.Host, StringComparison.OrdinalIgnoreCase);
но я выхожу из контроллера и должен найти другой способ заменить этот this.Request.Url.Host
.
Вся моя цель - иметь доступ к этому методу в классе-помощнике:
Url.IsLocalUrl(returnUrl);
Мой вспомогательный метод будет выглядеть так:
public static string GetLocalUrl(string url)
{
if(Url.IsLocalUrl()){
return url;
}
else{
return Action("Security", "Home");
}
}
Ответы
Ответ 1
Используйте либо HttpContext.Current.Request
, либо вставляйте экземпляр HttpContextBase
во все, что ему требуется. Я бы рекомендовал вариант 2, потому что вы можете легко проверить этот другой компонент. Так как HttpContextBase можно издеваться/замаскировать.
Ответ 2
Вы можете использовать это вне контроллера:
System.Web.HttpContext.Current.Request.Url
Ответ 3
В html-помощнике вы можете использовать
htmlHelper.ViewContext.HttpContext.Request.Url