ASP.NET Core MVC 3.0 - 'EmailAddress' 数据注释导致 HTML 输出故障
ASP.NET Core MVC 3.0 - 'EmailAddress' data annotation causing HTML output glitch
创建新的 class 模型时,如果应用数据注释类型“[DataType(DataType.EmailAddress)]”或“[EmailAddress]”,我会显示原始输出在我的 HTML.
// In ~/Models/Product.cs
// using System.ComponentModel.DataAnnotations;
public class Product
{
[DataType(DataType.EmailAddres)]
public string Publisher { get; set; }
}
在我的 Razor HTML 中,我有:
// In ~/Views/Products/Index.cshtml
<table class="table">
<tbody>
@foreach (var item in Model)
{
// gets displayed as a literal string format instead of data from database
<tr title="Published by: @Html.DisplayFor(modelItem => item.Publisher)"></tr>
}
</tbody>
</table>
例如,假设我的数据库中有 3 条记录 "Product"。 Razor HTML 代码循环遍历数据库以显示每条记录。
通过应用数据注释“[DataType(DataType.EmailAddres)]”或“[EmailAddress]”,将其转换为文字字符串似乎会产生一些奇怪的效果,这意味着不显示以正确的方式从数据库中获取数据,即“Published by: john.smith@test.com”,而是将其输出为单个衬里字符串 'john.smith@test.com > john.smith@test.com > john.smith@test.com >' 在视图中。
有人知道为什么会这样吗?
有关其他信息,我使用的是 ASP.NET 核心版本 3.0 MVC,但如果我没记错的话,它也存在于版本 2.1 中。
如果您在浏览器中查看 html 源代码,您会发现代码片段 @Html.DisplayFor(modelItem => item.Publisher)
会将字段 (EmailAddress) 呈现为超链接而不是简单文本,如下所示。
<a href="mailto:john.smith@test.com">john.smith@test.com</a>
导致 html 混乱。您可以尝试修改如下代码。
<tbody>
@foreach (var item in Model)
{
<tr title="Published by: @item.Publisher">
<td>
@Html.DisplayFor(modelItem => item.Publisher)
</td>
</tr>
}
</tbody>
测试结果
创建新的 class 模型时,如果应用数据注释类型“[DataType(DataType.EmailAddress)]”或“[EmailAddress]”,我会显示原始输出在我的 HTML.
// In ~/Models/Product.cs
// using System.ComponentModel.DataAnnotations;
public class Product
{
[DataType(DataType.EmailAddres)]
public string Publisher { get; set; }
}
在我的 Razor HTML 中,我有:
// In ~/Views/Products/Index.cshtml
<table class="table">
<tbody>
@foreach (var item in Model)
{
// gets displayed as a literal string format instead of data from database
<tr title="Published by: @Html.DisplayFor(modelItem => item.Publisher)"></tr>
}
</tbody>
</table>
例如,假设我的数据库中有 3 条记录 "Product"。 Razor HTML 代码循环遍历数据库以显示每条记录。
通过应用数据注释“[DataType(DataType.EmailAddres)]”或“[EmailAddress]”,将其转换为文字字符串似乎会产生一些奇怪的效果,这意味着不显示以正确的方式从数据库中获取数据,即“Published by: john.smith@test.com”,而是将其输出为单个衬里字符串 'john.smith@test.com > john.smith@test.com > john.smith@test.com >' 在视图中。
有人知道为什么会这样吗?
有关其他信息,我使用的是 ASP.NET 核心版本 3.0 MVC,但如果我没记错的话,它也存在于版本 2.1 中。
如果您在浏览器中查看 html 源代码,您会发现代码片段 @Html.DisplayFor(modelItem => item.Publisher)
会将字段 (EmailAddress) 呈现为超链接而不是简单文本,如下所示。
<a href="mailto:john.smith@test.com">john.smith@test.com</a>
导致 html 混乱。您可以尝试修改如下代码。
<tbody>
@foreach (var item in Model)
{
<tr title="Published by: @item.Publisher">
<td>
@Html.DisplayFor(modelItem => item.Publisher)
</td>
</tr>
}
</tbody>
测试结果