在 ASP.NET 核心中显示只读字段

Display a readonly field in 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 显示为可编辑字段。

Name 不应该在 文本框 中(即使是只读的),而是在 标签 div...

是否有显示此类字段的标准方法?

我不想将该字段更新回模型或数据库,我只需要读取该字段。

使用 Razor 语法将其输出为 HTML

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

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

注意 - 这将需要适当的样式,或包装在 <span> 标签等中...

[ReadOnly(true)]
public string Name {get; set;} 

添加只​​读属性。请记住在 class.

的顶部包含 using System.Component;

这对我有用

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

试试这个:

<label class="form-control">@Model.Name</label>

试试这个。

<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

这对我有用:

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

如果您想显示模型 属性 Name 并且不希望它成为 input 元素,只需这样做:

<p>@Model.Name</p>

重要提示: 如果您在模型中的 Name 上使用了 DisplayFormat 属性(例如应用 number/date 格式或控制blanks/nulls 的显示方式),您必须改为这样做:

<p>@Html.DisplayFor(m => m.Name)</p>

当然不一定是p。使用 divspan

给它一个 class 并根据需要用 CSS 设置样式。

你可以试试这个:

<input asp-for="Name" readonly="@(!string.IsNullOrEmpty(Model.Name))" />
<input asp-for="Nickname" />

在这里使用任何自定义条件,只需将其设置为return truefalsereadonly="@(!string.IsNullOrEmpty(Model.Name))"