次のように、モデルクラスでプロパティを読み取り専用としてマークしました。
public class RegisterModel
{
[Display(Name = "User name")]
[ReadOnly(true)]
public string UserName { get; set; }
...
}
そして私の見解では:
@Html.EditorFor(m => m.UserName)
しかし、アプリケーションを実行すると、テキストボックスそうではありません読み取り専用です。
ビューでhtml属性を使用して読み取り専用にすることができることはわかっていますが、これをモデルクラス自体で実行できることをお勧めします。
それは達成できますか?
[更新] new { @readonly = "readonly" }
.Readonly
プロパティがないと、この属性がバインドされているプロパティが読み取り専用か読み取り/書き込みかを指定しないと、不可能だと思います。 詳細はこちら
ただし、 カスタムヘルパー を試すか、モデルでEditable
の代わりにReadonly
を使用して、ビューのメタデータプロパティを使用することができます。
[Editable(false)]
すでに調べたと思います ReadOnly(true)はHtml.EditorForModelで機能しますか?
また、すばらしい記事 odetocode.com
ReadOnly
属性は、HMTLヘルパーがフィールドを有効な入力として表示することをブロックしません。これは、MVCデータバインダーのみが尊重する情報です。
つまり、ユーザーがフォームを送信した後にポストバックされるRegisterModel
インスタンスは、適切なユーザーの入力に関係なく、そのnull
プロパティに常にUserName
値を持ちます。フォームのフィールド。
ReadOnly属性は、入力を読み取り専用に設定しません。
これを試して
Html.TextBoxFor(x => x.UserName, new { readonly = "readonly" })
SETTERを使用している場合は、{get;を使用する必要があります。プライベートセット; }。これにより、クライアントが値を変更できないようになります。 HTML 5入力を使用して、そこにマークを付けることもできます。