2011-02-05 50 views
15

nasıl Request kullanmadan ev sahibi alırım şimdiki ev sahibi olsun?ASP.NET MVC

return String.Equals(this.Request.Url.Host, absoluteUri.Host, StringComparison.OrdinalIgnoreCase); 

ama denetleyici dışına taşıyarak ve bu this.Request.Url.Host yerine başka bir yol bulmalıyız ediyorum: Bu kod, bir denetleyici yerleştirilebilir.

Url.IsLocalUrl(returnUrl); 

My yardımcı yöntem aşağıdaki gibi görünecektir:

public static string GetLocalUrl(string url) 
{ 
    if(Url.IsLocalUrl()){ 
     return url; 
    } 
    else{ 
     return Action("Security", "Home"); 
    } 
} 

cevap

10

ya HttpContext.Current.Request kullanmak veyabir örneğini enjektebu bilgiye ihtiyacı olan her şeye. Seçenek 2'yi öneririm, çünkü bu diğer bileşeni kolayca test edebilirsiniz. HttpContextBase alay/inat olabilir. html yardımcı olarak

+1

bir istisna olsun Ama, nasıl olması: 'System.Web.HttpException: İstek bu context' mevcut değildir? –

17

Bir kumandanın bunu dışarıda kullanabilirsiniz

Benim bütün amacı yardımcı sınıfında bu yöntemle erişmesini geçerli:

System.Web.HttpContext.Current.Request.Url 
+0

kullanabilirsiniz Bu MVC5 projesinde hile yaptı. Bu kod bir denetleyici olduğu için onun muhtemelen güvenli daima dan çekmek için uygulanabilir bir bağlam olacak varsaymak. –

1

Eğer

htmlHelper.ViewContext.HttpContext.Request.Url