在 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
。使用 div
、span
等
给它一个 class 并根据需要用 CSS 设置样式。
你可以试试这个:
<input asp-for="Name" readonly="@(!string.IsNullOrEmpty(Model.Name))" />
<input asp-for="Nickname" />
在这里使用任何自定义条件,只需将其设置为return true
或false
。 readonly="@(!string.IsNullOrEmpty(Model.Name))"
我是 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
。使用 div
、span
等
给它一个 class 并根据需要用 CSS 设置样式。
你可以试试这个:
<input asp-for="Name" readonly="@(!string.IsNullOrEmpty(Model.Name))" />
<input asp-for="Nickname" />
在这里使用任何自定义条件,只需将其设置为return true
或false
。 readonly="@(!string.IsNullOrEmpty(Model.Name))"