2009-06-08 15 views
6

VS2008 ve .net 3.5 kullanıyorum. Çözümümde bir sınıf kitaplığı (Myproject.Controllers) oluşturdum. Bu sınıfın altında bir Denetleyiciler klasörü ekledim. Ve klasörde genel sınıf MyController olarak bildirilen bir MyController ekledim MyController: ControllerASP.NET MVC için varsayılan Denetimciler klasörü yerine kullanılacak bir Denetleyici klasörü nasıl ayarlanır veya belirtilir?

Görünümlerim hala varsayılan Görünümler klasöründedir. Şimdi, VS'de çalıştırdığımda, Default.aspx.cs: {"Yol denetleyicisi bulunamıyor veya IController uygulamıyor." Mesajını alıyorum.}}

I MyController'ımın bir kopyasını varsayılan Kontroller klasörüne koyup, iyi çalışıyor. Denetleyiciler yolunu nasıl ayarlayabileceğimi/yapılandıracağımı bilen var mı? Web’de arama yaptım ve bunun için hiçbir şey bulamadım. Teşekkür ederim.

cevap

0

Bunu çok uzun zaman önce yapmadım ve denetleyicinin bulunduğu ad alanı'un varsayılan klasörde olması ile aynı olduğundan emin olmak sadece zor kısmıydı. Ana tuzak, sınıf kitaplığı projesinin kök ad alanıdır - Solution Explorer'da proje düğümünü sağ tıklatıp, Properties seçerek ve Root Ad Alanı metin kutusundaki değeri değiştirerek değiştirebilirsiniz. En kolay yol, MVC uygulamasıyla aynı şekilde adlandırmaktır.

0

Anlayışımdan bu sadece işe yarar. Kontrolör kütüphanenizi web sitenize referans olarak eklediniz mi? MVC kaynağı

// ControllerTypeCache.cs: 
private static List<Type> GetAllControllerTypes(IBuildManager buildManager) { 
    // Go through all assemblies referenced by the application and search for 
    // controllers and controller factories. 

// DefaultControllerFactory.cs 
// if all else fails, search every namespace 
return GetControllerTypeWithinNamespaces(controllerName, null /* namespaces */); 
0

itibaren

Ben IIS7.0 üzerinde MVC 2.0 kullanan dotnet 4.0 kullanılarak benzer bir sorunu vardı. Tüm normal şeyleri kontrol ettikten sonra, doğru MVC derleme sürümüne sahip oldum ve sonunda web sunucusundaki rastgele bir konumdan/inetpub/www adresine geçtim ve sitemi web sunucusunda yeniden oluşturdum. Bu hile yapmış gibi görünüyordu. Ayrıca, DotNet MVC, MVC yollarını çözebilmek için/inetpub/www altındaki kaynağa sahip olmayı sever.

1

Kendi Denetleyici fabrikanızı oluşturarak, denetleyicilerin nasıl kullanıldığını tam olarak belirtebilirsiniz. Bir sınıf oluşturmak ve onu IControllerFactory

http://msdn.microsoft.com/en-us/library/system.web.mvc.icontrollerfactory_members.aspx

adım 2 kaynaklanıyor - - uygulamasında yeni Kontrolör Fabrikası tüketin

ControllerBuilder.Current.SetControllerFactory(typeof(MyControllerFactory)); 

IControllerFacotry uygulayan 2 yöntemler

başlatmak İşte nasıl

adım 1 var

IController IControllerFactory.CreateController(System.Web.Routing.RequestContext requestContext, string controllerName); 
void IControllerFactory.ReleaseController(IController controller); 

Ve hepsi bu kadar var.

İlgili konular