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.
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 ...
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
Cela a fonctionné pour moi
<input asp-for="Name" class="form-control" ReadOnly="true"/>
<input asp-for="Nickname" class="form-control" />
[ReadOnly(true)]
public string Name {get; set;}
Ajoutez un attribut ReadOnly. N'oubliez pas d'inclure using System.Component;
en haut de votre classe.
Cela a fonctionné pour moi:
<input asp-for="Name" class="form-control" readonly="readonly" />