存储为 Varchar(9) 的 SSN 的 Razor 页面显示模板
Razor Page Display Template for SSN stored as a Varchar(9)
我正在尝试显示存储为带有破折号的 Varchar(9) 的 SSN。
数据库中的 SSN 存储为 varchar(9),没有破折号。它不存储为数字,因为如果它存储为数字,任何前导零都会被删除。我不能将 DisplayFormat 属性与 DataFormatString = "{0:###-##-####}" 一起使用,因为这似乎只有在 SSN 存储为 Long 类型时才有效。所以,我正在尝试为其创建一个显示模板。我创建了一个名为 SSN 的 .cshtml 文件,并将其放在共享文件夹内名为 DisplayTemplates 的文件夹中,我在 Razor 页面上使用 @Html.DisplayFor(modelItem => item.SSN) 来显示 SSN ,但是我在显示模板中创建的遮罩没有生效。
这是 SSN.cshtml 显示模板中的代码:
@model PFDTrustDomain.Client
<div>
@Model.SSN.Insert(2, "-").Insert(5, "-");
</div>
我希望 SSN 显示为:123-45-6789,但继续显示为:123456789。
显示模板未命中,需要通过设置Copy to Output Directory
将模板复制到输出文件夹。
按照以下步骤操作:
@Html.DisplayFor
和 @model PFDTrustDomain.Client
不匹配,模板预期为客户端,但您通过 SSN 传递字符串。将 @Html.DisplayFor
更改为 @Html.DisplayFor(model => model.SSN,"SSN")
将模板中的 @model PFDTrustDomain.Client
更改为以下
@model string
<div>
@Model.Insert(3, "-").Insert(6, "-");
</div>
将 Shared/DisplayTemplates/SSN.cshtml
的 Copy to Output Directory
设置为 Copy always
我发现了这个问题(在我导师的明智帮助下)。除了按照 madreflection 的建议将字符位置更改为 3 和 6 之外,还需要将字符串 "Name of display template" 添加到 .cshtml 文件的 DisplayFor 方法中,如下所示:
<td>
@Html.DisplayFor(modelItem => item.SSN, "SSN")
</td>
我正在尝试显示存储为带有破折号的 Varchar(9) 的 SSN。
数据库中的 SSN 存储为 varchar(9),没有破折号。它不存储为数字,因为如果它存储为数字,任何前导零都会被删除。我不能将 DisplayFormat 属性与 DataFormatString = "{0:###-##-####}" 一起使用,因为这似乎只有在 SSN 存储为 Long 类型时才有效。所以,我正在尝试为其创建一个显示模板。我创建了一个名为 SSN 的 .cshtml 文件,并将其放在共享文件夹内名为 DisplayTemplates 的文件夹中,我在 Razor 页面上使用 @Html.DisplayFor(modelItem => item.SSN) 来显示 SSN ,但是我在显示模板中创建的遮罩没有生效。
这是 SSN.cshtml 显示模板中的代码:
@model PFDTrustDomain.Client
<div>
@Model.SSN.Insert(2, "-").Insert(5, "-");
</div>
我希望 SSN 显示为:123-45-6789,但继续显示为:123456789。
显示模板未命中,需要通过设置Copy to Output Directory
将模板复制到输出文件夹。
按照以下步骤操作:
@Html.DisplayFor
和@model PFDTrustDomain.Client
不匹配,模板预期为客户端,但您通过 SSN 传递字符串。将@Html.DisplayFor
更改为@Html.DisplayFor(model => model.SSN,"SSN")
将模板中的
@model PFDTrustDomain.Client
更改为以下@model string <div> @Model.Insert(3, "-").Insert(6, "-"); </div>
将
Shared/DisplayTemplates/SSN.cshtml
的Copy to Output Directory
设置为Copy always
我发现了这个问题(在我导师的明智帮助下)。除了按照 madreflection 的建议将字符位置更改为 3 和 6 之外,还需要将字符串 "Name of display template" 添加到 .cshtml 文件的 DisplayFor 方法中,如下所示:
<td>
@Html.DisplayFor(modelItem => item.SSN, "SSN")
</td>