2009-04-07 16 views
7

ViewContext'e erişimi olmayan bir yardımcı program sınıfından bir yol oluşturmak istiyorum.ASP.NET MVC'de ViewContext olmadan nasıl bir yol oluştururum?

Bu mümkün mü? ViewContext.Current

'un herhangi bir eşdeğeri görünmüyor. Yönlendirme ve HttpContext için tüm yapıcılarda balık avlamaya çalıştım ama istediğim kadarını alamıyorum.

Bu, aradığım şey - bu, RouteTable.Routes türünün RouteCollection türünde ve RouteData değil olduğu için işe yaramıyor olsa da. Çok yakın - henüz şimdiye kadar

 RequestContext requestContext = new RequestContext(HttpContext.Current, RouteTable.Routes); 
     UrlHelper url = new UrlHelper(requestContext); 
     var urlString = url.RouteUrl(new {controller="DynamicImage", action="Button", text="Hello World"}); 

Not :-): RequestContest tipi System.Web.Routing.RequestContext ait olup HttpContext

cevap

11

bu deneyin:

var httpContext = new HttpContextWrapper(HttpContext.Current); 
var requestContext = new RequestContext(httpContext); 
var urlHelper = new UrlHelper(requestContext, new RouteData())); 

Umut bu

yardımcı olur

GÜNCELLEME:

Önceki doğru değil (bunu hafızamdan yükledim). (Benim projelerden biri çalışır) yerine bu deneyin:

var httpContext = new HttpContextWrapper(HttpContext.Current); 
var requestContext = new RequestContext(httpContext, new RouteData()); 
var urlHelper = new UrlHelper(requestContext); 

new RouteData() aslında ben aslında çalıştığını sürpriz new UrlHelper(requestContext, RouteTable.Routes)

+0

oldu çağrılarının sadece tek başlatma RequestContext ve new UrlHelper(requestContext) kullanıyor. Henüz boş bir RouteData() nesnesinin olmasıyla ilgili sonuçların ne olduğundan emin değilim. belki de mevcut rotayı yeni rota için 'üs' olarak kullanıyor? bilen var mı –

+0

Cevabımı –

+0

eu-ge-ne = ge-ni-us güncelledik, çok teşekkür ederim –

İlgili konular