文字列プロパティのみの表示テンプレートを作成し、他のすべてにはデフォルトを使用したいと思います。
次の内容でViews/Shared/DisplayTemplatesにstring.cshtmlを作成しようとしました。
@model string
@Html.TextBoxFor(m => m, new { @readonly = "readonly" })
DisplayFor(m => m.property)を使用するビューを開こうとすると、次のようなエラーが表示されます。ディクショナリに渡されるモデルアイテムのタイプは「System.DateTime」ですが、このディクショナリにはタイプ'System.String'のモデルアイテム。または:ディクショナリに渡されるモデルアイテムのタイプは「System.Int64」ですが、このディクショナリにはタイプ「System.String」のモデルアイテムが必要です。
使用するすべてのタイプに表示テンプレートを追加することでこれを解決できることは知っていますが、カスタムテンプレートが定義されていないすべてのタイプに「デフォルト」テンプレートを使用することも可能だと思いますか?
更新 ダリンの答えの後、私はブラッドのチュートリアルをチェックし、テンプレートを次のように変更しました。
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @readonly = "readonly" })
これは「デフォルト」テンプレートに基づいており、すべてのタイプで機能します。