web-dev-qa-db-fra.com

Afficher un champ en lecture seule dans ASP.NET Core

Je suis nouveau dans ASP.NET Core et je voudrais poser des questions sur l'affichage d'un champ dans une vue. j'ai un

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

En général, dans la vue EditPerson, je fais

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

pour afficher les champs.

Mais dans ma vue EditPerson, je dois afficher Name en lecture seule et Nickname comme champ modifiable.

Le Name ne doit pas être dans un zone de texte (même en lecture seule), mais plutôt dans un label ou div ...

Existe-t-il une approche standard pour afficher ces champs?

Je ne veux pas que le champ soit mis à jour vers le modèle ou la base de données, j'ai seulement besoin de lire le champ.

7
Serge

Sortie en HTML avec la syntaxe Razor

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

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

Remarque - cela nécessitera un style approprié ou un enveloppement dans <span> tag etc ...

6
Alex

Essaye ça.

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

Ce rendu:

<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">

Je l'ai réalisé d'ici: https://github.com/aspnet/Mvc/issues/7333#issuecomment-363504164

12
tsu1980

Cela a fonctionné pour moi

<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;} 

Ajoutez un attribut ReadOnly. N'oubliez pas d'inclure using System.Component; en haut de votre classe.

3
Satish

Cela a fonctionné pour moi:

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