表示ロジック/責任はビューの肩にかかっているので...
ルールがユーザーの許可などに依存し、すべてのコントロールに適用できる場合は、ビューモデルごとに 1 つの列挙型で十分だと思います。
それ以外の場合は、問題ありません。私が変更する唯一のことは、ビューモデルのプロパティを表示するためのカスタム拡張メソッドを作成することです。
これらの行に沿ったもの:
public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, DisplayMode mode)
{
// put a switch statement here to either
// add html attribute for readonly
// or
// return null/emptystring
}
この拡張機能を使用すると、ビューが持つ可能性があります@Html.TextBoxFor(x => x.Prop, Model.PropMode)
これにより、かみそりのビューが少しきれいになります。
また、読み取り専用フィールドの値は引き続き変更される可能性があることに注意してください (開発ツール、firebug)。これは、HttpPost アクションで処理する必要があるものです。