2010-04-22 12 views
7

Özel html yardımcıları oluşturmak için iki öneriye rastladım: varolan birini genişletme veya kendi sınıfınızı yazma.mvc kendi html yardımcımı oluştur, httpcontext'e nasıl erişebilirim?

Özel kodumu ayrı tutmayı tercih ederim, iyi boyuttaki bir uygulama için yardımcıları genişletmek biraz gevşek görünüyor.

Ancak, genişlemede gördüğüm yarar, 'This HtmlHelper helper', ViewContext.HtmlContext'i alabildiğim bir parametre olarak iletildi.

Sorum şu: Kendi yardımcı sınıfımı nasıl açabilirim ve hala ViewContext.HtmlContext ürününü kullanabiliyor musunuz?

Teşekkürler!

Düzenleme: Yapmak istediğim şey, html gibi bazı özel nesneler oluşturacak "MyHelperClass" oluşturmaktır. Bana sunduğu herhangi bir şey kullanmadığım için bir Html yardımcısının "Genişletilmesi" gerekmiyor. Şu anda htmlhelper'ı uzatmamın tek nedeni, gösterdiğiniz gibi httpcontext'e erişmek. Ama sorum şu ki, mevcut bir yardımcıyı genişletmeden kendi sınıfımdaki httpcontext'e nasıl erişebilirim. teşekkürler

+1

açıklanamayan downvotes –

cevap

12
public static class HtmlHelperExtensions 
{ 
    public static HttpContextBase GetContext(this HtmlHelper htmlHelper) 
    { 
     return htmlHelper.ViewContext.HttpContext; 
    } 
} 
+1

'system.web.httpcontext tip system.web.httpcontextbase dönüştürmek olamaz' gerçekten yararlıdır. Bu yöntem yerine httpcontextbase dönmelidir? –

+0

@rj, evet doğru, – mxmissile

+0

Evet, HttpContextBase, özür dilerim. Bu yöntemi kullanacağından şüpheliyim. Bir uzantı yönteminin içinde olduğunda HtmlHelper.ViewContext.HttpContext nesnesine erişmek için statik bir sınıf ve yöntem kullanmanın bir örneği daha fazladır. Projelerin statik HtmlHelperExtensions sınıfında birçok yönteme sahip olması yaygındır. (Ancak, başka bir iş parçacığı için genel olarak uzantı yöntemleri sevmeme ayıracağım). – bradjive

1

Ayrıca kullanabilirsiniz: System.Web.HttpContext.Current.Request.RequestContext

+0

Bu, aradığım cevaplara beni yönlendirdi. Bir htmlHelper vardı ve isteği almaya çalışıyordum. Çözüm? helper.ViewContext.HttpContext.Request - Teşekkürler – BrianLegg

İlgili konular