DisplayFor と EditorFor を使用する代わりに、より一般的な ContentFor を作成したいと思います。その Html 拡張では、メタデータ値を考慮して、結果のコントロールをレンダリングする方法を決定します。私が判断できない唯一のパズルのピースはこれです: 現在 DisplayTemplate をレンダリングしているか、EditorTemplate をレンダリングしているかを判断する方法はありますか? この実例として、文字列をレンダリングするときは、ディスプレイ バージョンでは としてレンダリングしたいのですが、エディタ バージョンをレンダリングするときは、テキスト ボックスとしてレンダリングしたいと思います。
説明をわかりやすくするために、Address.ascx という 2 つのテンプレートがあり、1 つは DisplayTemplates ディレクトリにあり、もう 1 つは EditorTemplates ディレクトリにあるとします。両方とも ContentFor を使用してレンダリングしたいのですが、表示バージョンではラベルとしてレンダリングされ、エディター バージョンではテキスト ボックスとしてレンダリングされます。