2010-01-14 24 views
7

İş mantığı katmanım içinde statik bir metodu arıyorum, çünkü burada bahsetmeyeceğim, yeniden yönlendirmeyi kendisinin yapması gerekiyor. yönlendirme.Redirect asp.net mvc sayfası iş mantığı sınıfından

HttpContext nesnesini kullanmam gerektiğini, ancak rotayı oluşturmayla uğraştığımı düşünüyorum. Ben sadece context.Response.Redirect ("someController/someMethod) yapılamıyorum çünkü kullanıyorum" eylemci denetleyicisi için parametreleri eklemek gerekir. Bu varsayarsak

doğrudur:

new { Controller = "MyController", action = "Index", OtherParm="other value" } 

TIA

cevap

11

Çok çirkin, anti-:

HttpContext context = HttpContext.Current; 

herkes gibi bir nesne kullanarak bir rota oluşturmak için nasıl bazı sözdizimi yardım sağlamak misiniz -MVC, iş katmanında yapma, vb ... ama sen soruyorsun:

var context = new RequestContext(
    new HttpContextWrapper(System.Web.HttpContext.Current), 
    new RouteData()); 
var urlHelper = new UrlHelper(context); 
var url = urlHelper.Action("Index", new { OtherParm = "other value" }); 
System.Web.HttpContext.Current.Response.Redirect(url); 
+0

İlk önce yanıtladım ama seninkini gördüğümde sildim, çok anti-MVC kabul etti ama benim cevabım – Pharabus

+0

'dan çok daha iyi. Numunenizi bir rehber olarak kullanarak çalışıyorum ... biraz farklı yaptım, ama yardımınız olmadan yapamadım. Temel olarak, veritabanına karşı bir güvenlik denetimi yapıyorum ve BLL'de bir istisna atıyorum, çünkü oradan yönlendirmem gerekiyor. Çok anti-MVC dediniz .... bu kontrolü özel bir istisna atmak için nereye koymanızı önerirsiniz? Kontrolörde mi? – Kyle

+0

İstisnai BL'ye atmanızı, kontrol cihazında yakalamanızı ve ** kontrol cihazında ** yönlendirme işlemini gerçekleştirmenizi öneririm. –