2016-04-13 19 views
0

Mvc için bir Cms kullanıyorum. özelleştirme ihtiyaçları içinMvc'de bir Action yöntemini nasıl geçersiz kılarsınız?

public class OrderController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

, bu kontrolörün davranışını geçersiz kılmak ve aynı URL kullanıcı tarafından ziyaret edildiğinde farklı bir şey iade etmek istiyorum: Bu Cms aşağıdaki Kontrolörü sahiptir. Bu sonuca ulaşmak için en iyi yaklaşım nedir? How to override controller actionresult method in mvc3?

public class OrderController : Cms.Areas.Admin.Controllers.OrderController 
{ 
    public override ActionResult Index(Guid orderItemId) 
    { 
     // Do extra stuff 

     return View(); 
    } 
} 

Ama bu işe yaramazsa:

Bu cevap sonrasında Cms Kontrolörü devralan ve ActionResult geçersiz kılma yapmaya çalıştı. "Yönetici/sipariş" i değiştirmeye çalıştığımda hala Cms Controller/Action'a giriyorum.

Herhangi bir öneriniz var mı?

NOT: Geçersiz kılmaya çalıştığım denetleyici başka bir derlemedir ve eylem sanal olarak ayarlanmıştır. Bir Bölgede, bu nedenle Rota Bölge Kayıtları içinde yapılandırılmıştır.

+0

"Mvc için bir Cms kullanıyorum" - MVC kullanan çok sayıda CMS platformu var ve ayrıca evde yetiştirilebileceğinden bahsetmeyecek şekilde özelleştirilebilir. Kimse kullanmaya çalıştığınız ve kişiselleştirmeyi istediğinizi bilmeden buna cevap veremez. Lütfen kullandığınız platformu, bu platforma nasıl bağlamaya çalıştığınızı belirtin. – Igor

+0

Aslında, Cms'yi kendim yapıyorum, bu yüzden kodu istediğim gibi değiştirebilirim. Denetleyicileri, geliştiricilerin – tocqueville

+0

Tamam, sonraki soruyu geçersiz kılabileceğini kontrol etmek için düzgün bir yol arıyorum. Ama bu işe yaramıyor. '' bana gerçekten çalışmış gibi gözüküyor. Geçersiz kılma kodunuz yeni bir görünüm tanımlamaz, aynı Görünümü üretecek olan geçersiz kılma yöntemi ile aynı sonucu verir. Bunu sınamak için, geçersiz kılma kodunuzda bir kesme noktası ayarlayın VEYA bir dize parametresi 'Görünüm (" Diğer ") kullanarak farklı bir görünüm döndürün;' Ayrıca, üst üste bir 'sanal' olmadan 'geçersiz kıl' anahtar sözcüğünü kullanamazsınız. Son olarak, yönlendirmeyi göz önünde bulundurmak zorundasınız, rotayı nasıl tanımlıyorsunuz, böylece yeni denetleyicinize çarpıyorsunuz? – Igor

cevap

0

talebiniz kullanmak OrderController yerine EcommerceOrderController Bu bir yönlendirme soru olmak gibi geliyor bana senin MVC routes

0

üzerinde bir göz atmak gerekir. Rotanız hala orijinali işaret ediyorsa, denetleyiciyi geçersiz kılmanız fark etmez. İşleminizi çağırmak için bir URL istiyorsanız, o anda orijinal olarak çözümlenmekte olandan daha yüksek bir önceliğe sahip bir rota eklemeniz gerekir.

+0

Yani, sadece açık olmak gerekirse, geçersiz kılan şeyleri bir kenara bırakacağınızı söylüyorsunuz ... Ve sadece özel bir rota ile işaret etmek için farklı bir kontrolör ve eylem yaratın, değil mi? – tocqueville

+0

Evet. Yollar hangi denetleyicinin ve eylemin başlatıldığını kontrol eder. – esmoore68

İlgili konular