如何在不使用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");
}
}
答案 0 :(得分:18)
您可以在控制器之外使用它:
System.Web.HttpContext.Current.Request.Url
答案 1 :(得分:10)
使用HttpContext.Current.Request
,或者将HttpContextBase
的实例注入需要此信息的任何内容。我建议选项2,因为您可以轻松测试其他组件。因为HttpContextBase可以被模拟/存根。
答案 2 :(得分:1)
在html帮助器中,您可以使用
htmlHelper.ViewContext.HttpContext.Request.Url