2011-06-26 12 views
7

Bu sorunun henüz sorulmadığını hayal bile edemiyorum ... ancak, onu bulamıyorum.Sınıf türü bildirimleri için ASP.NET MVC 3'te bir ActionNameAttribute var mı?

Yani burada o da: Ben sınıflar için aynı başarmak nasıl,

[ActionName("confirm")] 
[HttpGet] 
public ActionResult Confirm(string stuffTitle) 
{ 
    ActionResult resultView = CreateSomeStuff(stuffTitle); 
    return resultView; 
} 

Ama: Ben bu gibi ASP.NET MVC 3'te benim eylem yöntemleri üzerine ActionNameAttribute çok kullandım? Şunun gibi: ActionNameAttribute ile

[ActionName("personal")] 
public class AccountController : Controller 

o yöntem declartions sadece mümkündür. Ama sanırım sınıf tipi bildirimlerde bir şekilde mümkün olmalı. Belki henüz duymadığım başka bir özellik var mı? Diğer bazı geçici çözüm?

Fikir sahibi olan var mı? Şimdiden teşekkürler!!

+1

ActionName bir denetleyicide? Hangi amaçla? Bu amaç daha önce çok garip görünüyor ve hiç bir anlam ifade etmiyor. Burada ne elde etmeye çalışıyorsun? –

+0

Neden sadece kontrol cihazınızın adını değiştirmiyorsunuz? – ZippyV

+1

Bu yazıyı bir denetleyiciye Alias ​​vermek için bir yol arıyordum, bu da tam olarak düşündüğüm bir şeydir. Sebebi, adlandırma kuralları ve istenen URL arasındaki bir çakışmadır. –

cevap

6

Gerçekten neyin peşinde olduğunuzu anlamakta zorlanıyorum. Kontrolörün adını değiştirmek ister misin? böylece bir rota kullanıyorsanız:

routes.MapRoute(
    "FooRoute", 
    "foo/{action}/{action}/{id}", 
    new { controller = "Account", action = "Index", id = UrlParameter.Optional } 
); 

Şimdi foo/someaction için tüm istekleri Account kumandanın karşılık gelen eylem yönlendirilecektir.

+0

En iyi cevap bence. Rota yolundaki {action} ve {id} takma adlar gibi, rota yolundaki {controller} takma adına daha fazla kontrol eklemek de mantıklı olur. Maalesef beklediğim şekilde mümkün değil. Ayrı bir yol yaratmak işi yapıyor, teşekkürler! –

0

MVC Denetleyicileri, Eylemleri eşleyebilen yöntemleri içerir. Darin’in dediği gibi, bir sınıfta hangi amaca ulaşırdı? Bu sınıfın bir 'liste' eylemi olduğunu söylemek yardımcı olmaz. Hangi yöntemi de söylemelisin, değil mi?

Bu yazıyı Phil Haack'ın blogunda, http://haacked.com/archive/2008/08/29/how-a-method-becomes-an-action.aspx adresinde buldum. Okuduktan sonra önceden özür dilerim. Bence söylediği ve ortaya çıkan tartışmanın bir kısmı size yardımcı olabilir.

+0

Belki biraz açıklama: ActionNameAttribute'u bir yöntemi taklit ettiğim için kullandığımdan (fc.x., i17n), sadece sınıf bildirimlerinde bunun mümkün olması gerektiğini düşündüm. –

+0

Ne aldığınızı anlıyorum. Bir benzetme olarak, denetleyici bir kutudur; En üstte bir özellik bana içinde ne olduğunu söylerdi. Bununla birlikte, eylemlerle, yöntemin kendisiyle daha çok ilgileniyorsunuz. –

İlgili konular