web-dev-qa-db-ja.com

ASP.NET Coreで読み取り専用フィールドを表示する

ASP.NET Coreの初心者で、ビューにフィールドを表示することについて質問します。私は

class Person { 
    public string Name {get; set;} 
    public string Nickname {get; set;} 
}

通常、EditPersonビューでは、

<input asp-for="Name" class="form-control" />
<input asp-for="Nickname" class="form-control" />

フィールドを表示します。

しかし、私のEditPersonビューでは、Nameを読み取り専用として表示し、Nicknameを編集可能フィールドとして表示する必要があります。

Nametextbox(readonlyであっても)ではなく、labelまたはdiv ...

そのようなフィールドを表示する標準的なアプローチはありますか?

フィールドをモデルまたはDBに更新したくないので、フィールドを読み取るだけで済みます。

7
Serge

Razor構文でHTMLとして出力します

https://docs.Microsoft.com/en-us/aspnet/core/mvc/views/razor

@Model.Name
<input asp-for="Nickname" class="form-control" />

注-これには適切なスタイル設定、または<span>タグなどでのラップが必要です...

6
Alex

これを試して。

<input asp-for="Name" class="form-control" readonly="@(true)">
<input asp-for="Name" class="form-control" readonly="@(false)">

このレンダリング:

<input class="form-control" type="text" id="Name" name="Name" value="Tom" readonly="readonly">
<input class="form-control" type="text" id="Name" name="Name" value="Tom">

私はそれをここから実現しました: https://github.com/aspnet/Mvc/issues/7333#issuecomment-363504164

12
tsu1980

これは私のために働いた

<input asp-for="Name" class="form-control" ReadOnly="true"/>
<input asp-for="Nickname" class="form-control" />
5
Musab
[ReadOnly(true)]
public string Name {get; set;} 

ReadOnly属性を追加します。クラスの先頭にusing System.Component;を必ず含めてください。

3
Satish

これは私のために働きました:

<input asp-for="Name" class="form-control" readonly="readonly" />
0
user2341923