'daki varsayılan EditorFor şablon seçimini geçersiz kıluyorum, şu anda çok fazla görüntüyü genellemek için EditorFor kullanan bir MVC uygulaması oluşturuyorum. Bütün görünüm temelde sadece bir EditorForModel ve harika çalışıyor. Ancak, bir çözüm bulmayı başaramadığım küçük bir soruna ulaştım ve buna ihtiyacım olan şekilde çalışması ve EditorFor'u bir arayüz haline getirmeye çalışması önemli. Bağlantılar ve bunun gibi her şey halledildi, ama sorun şu ki, EditorFor bir arabirim olduğunu ve varsayılan olarak "Nesne" şablonunu görüyor. Arabirimine bakmak ve bu isimle bir şablon bulabilir mi diye görmem gerekiyor ve eğer yapamazsa, bunlarla eşleşip eşleşmediğini görmek için mevcut tüm arayüzlere bakmak gerekiyor.ASP.NET MVC 3 RC
arayüzleri: daha sadece bu örneğe göz açıklamak için şimdi modeli = "IAppMusicProvider" ile bir görünümü oluşturmak ve Html.EditorForModel()
çalıştırırsanız
public interface IAppProvider
{
string Name { get; set; }
}
public interface IAppMusicProvider : IAppProvider
{
int GetPlaylistCount();
} // Yeah, I know, this interface is not smart, but it's only for show.
, bunu "~ Görüntüleme bulmalıyız \ Paylaşılan \ EditorTemplates \ IAppProvider.cshtml "-template. Bunu başarabileceğim basit bir yol var mı?
Evet, çalışır, ancak soruna bir yol değil (ya da daha doğrusu kullandığım aslında [DataType] özniteliği). Yaptığım uygulama eklentileri çalıştıracak ve sadece arabirimi ayarlayarak ve tüm eklenti-geliştiricilerin kullanıcı [DataType ("IAppProvider")] 'e zorlanmasına gerek kalmadan çalışmasına ihtiyacım var. – Alxandr
Şablonu arayüzle aynı şekilde adlandırmayı deneyin. Bunların sadece iki seçenek olduğunu hatırlıyorum. – jfar
Bu da işe yaramaz çünkü şablonun tüm IAppProvider işlevleri için çalışması gerekir. Bu varsayılan davranışı geçersiz kılmanın bir yolunu arıyorum, böylece bir IAppProvider uygulama arabirimi sağladığım takdirde, IAppProvider şablonunu kullanacaktır. Bu muhtemelen MVC'de bir yere kodlanmalıdır (ControllerFactory ile yapabileceğiniz gibi, değiştirilmesi gereken bazı bileşenler), ama nereden başlayacağımı bile bilmiyorum. – Alxandr