ASP.NET MVC获得当前主机

时间:2011-02-05 14:39:06

标签: asp.net-mvc asp.net-mvc-3

如何在不使用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");
     }
}

3 个答案:

答案 0 :(得分:18)

您可以在控制器之外使用它:

System.Web.HttpContext.Current.Request.Url

答案 1 :(得分:10)

使用HttpContext.Current.Request,或者将HttpContextBase的实例注入需要此信息的任何内容。我建议选项2,因为您可以轻松测试其他组件。因为HttpContextBase可以被模拟/存根。

答案 2 :(得分:1)

在html帮助器中,您可以使用

    htmlHelper.ViewContext.HttpContext.Request.Url