我是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 中。
是否有标准方法来显示此类字段?
我不希望将字段更新回模型或数据库,我只需要阅读该字段。
答案 0 :(得分:10)
试试这个。
<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
答案 1 :(得分:3)
使用Razor语法将其输出为HTML
https://docs.microsoft.com/en-us/aspnet/core/mvc/views/razor
@Model.Name
<input asp-for="Nickname" class="form-control" />
注意 - 这需要适当的样式,或包装在<span>
标签等...
答案 2 :(得分:3)
这对我有用
<input asp-for="Name" class="form-control" ReadOnly="true"/>
<input asp-for="Nickname" class="form-control" />
答案 3 :(得分:2)
[ReadOnly(true)]
public string Name {get; set;}
添加ReadOnly属性。请务必在课程顶部加入using System.Component;
。
答案 4 :(得分:0)
这对我有用:
<input asp-for="Name" class="form-control" readonly="readonly" />
答案 5 :(得分:0)
如果要显示模型属性Name
,并且不希望它成为input
元素,请执行以下操作:
<p>@Model.Name</p>
重要:如果您在模型中使用了DisplayFormat
上的Name
属性(例如,应用数字/日期格式或控制空白/空值的显示方式) ,您必须改为这样做:
<p>@Html.DisplayFor(m => m.Name)</p>
当然,它不必是p
。使用div
,span
等
给它一个类,并根据需要使用CSS对其进行样式设置。
答案 6 :(得分:0)
您可以尝试以下方法:
<input asp-for="Name" readonly="@(!string.IsNullOrEmpty(Model.Name))" />
<input asp-for="Nickname" />
在此处使用任何自定义条件,只需使其返回true
或false
即可。 readonly="@(!string.IsNullOrEmpty(Model.Name))"
答案 7 :(得分:-2)
试试这个:
<label class="form-control">@Model.Name</label>