現在 EditorFor を使用して多くのビューを生成する MVC アプリケーションを作成しています。ビュー全体は、基本的に単なる EditorForModel であり、うまく機能します。ただし、解決策が見つからないように見える小さな問題が 1 つあります。それが必要な方法で機能することが重要です。それは、EditorFor をインターフェイスにレンダリングしようとするときです。バインディングとそのようなものはすべて処理されていますが、問題は、EditorFor がそれがインターフェイスであると認識し、デフォルトで「オブジェクト」テンプレートになることです。インターフェイスを調べて、その名前のテンプレートが見つかるかどうかを確認する必要があります。見つからない場合は、存在するすべてのインターフェイスを調べて、それらのいずれかに一致するかどうかを確認する必要があります。より簡単に説明するには、次の例を見てください。
インターフェース:
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.
model = "IAppMusicProvider" でビューを作成し、実行するHtml.EditorForModel()
と、"~Views\Shared\EditorTemplates\IAppProvider.cshtml" テンプレートを見つける必要があります。これを達成できる簡単な方法はありますか?