16

次のように、モデル クラスでプロパティを読み取り専用としてマークしました。

public class RegisterModel
{
    [Display(Name = "User name")]
    [ReadOnly(true)]
    public string UserName { get; set; }
    ...
}

そして私の見解では:

@Html.EditorFor(m => m.UserName)

しかし、アプリケーションを実行すると、テキストボックスは読み取り専用ではありません。

ビューでhtml属性を使用して読み取り専用にできることは知っていますが、モデルクラス自体でこれを行うことができればよいと思います。

それは達成できますか?

4

4 に答える 4

15

【追記】なしでは無理だと思いますnew { @readonly = "readonly" }Readonlyproperty は、この属性がバインドされるプロパティが読み取り専用か読み取り/書き込みかを指定します。詳細はこちら。

ただし、カスタム ヘルパーEditableを試すか、代わりReadonlyにモデルでUsing を試して、View でメタデータ プロパティを使用することができます。

[Editable(false)]

あなたはすでに ReadOnly(true) は Html.EditorForModel で動作しますか?

また、良い記事odetocode.com

于 2013-02-21T06:14:50.750 に答える
9

ReadOnly 属性は、入力を読み取り専用に設定しません。

これを試して

Html.TextBoxFor(x => x.UserName, new { readonly = "readonly" })
于 2013-02-21T06:06:16.117 に答える
0

SETTER を使用している場合は、{ get; を使用する必要があります。プライベートセット; }。これにより、クライアントは値を変更できなくなります。HTML 5 入力を使用して、そこにマークすることもできます。

于 2014-08-22T01:11:39.243 に答える