レンダリングされたビューでビュー フィールドが読み取り専用になるように、属性を使用してビュー モデル プロパティを読み取り専用としてマークしたいと考えています。System.ComponentModel.DataAnnotations.EditableAttribute を適用すると、必要な属性が正確に表示されますが、機能しないようです。つまり、テキスト ボックス フィールドはまだ編集可能です。私は周りを見回しましたが、答えが見つからず、関連する質問がいくつかあります。以下に適用される editable 属性は、ビューがレンダリングされるときに機能しません。
[Display(Name = "Last Name")]
[Editable(false, AllowInitialValue = true)]
public string LastName { get; set; }
このようなビュー ヘルパー関数を使用して読み取り専用の動作を実現できますが、私の好みはモデル プロパティの属性を使用することです。
@functions {
object getHtmlAttributes()
{
if (@ViewBag.Mode == "Edit")
{
return new {style = "width:100px;background:#ff6;", @readonly = "readonly"};
}
return new { style = "width:100px;" };
}
}
@Html.TextBoxFor(model => model.FirstName, getHtmlAttributes())
カスタム検証属性を含む他の属性は完全に正常に機能します。データ注釈の編集可能な属性がこのコンテキストで機能するか、上記のように機能するか、それとも他に何かする必要があるか教えていただけますか? ありがとう。