私が取り組んでいるプロジェクトでは、モデルで提供されるメタデータに基づいて、エディター テンプレートをその表示テンプレートにリダイレクトするように依頼されました。
今、エディター テンプレートにヒットする前にそれを行う方法を検討していましたが、少なくともシステムがどのように設計されているかについては、価値があるよりも多くの問題を引き起こしているようです。
最も単純な例は文字列エディターで、単純なテキスト ボックスですが、IsReadOnly が設定されている場合は、無効なテキスト ボックスではなく、テキストとしてのみ表示されるようにします。
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%
if (this.ViewData.ModelMetadata.IsReadOnly)
{
Response.Write(Html.DisplayForModel());
}
else if (this.ViewData.ModelMetadata.ShowForEdit)
{
<%= Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line" }) %>
<% } %>
これまでのところ、私が見つけた唯一の本当の解決策は、表示テンプレートをエディター テンプレートにコピーすることです。より多くのコードを複製せずに機能する何かを行う方法を知っている人はいますか?