[英]Razor Page Display Template for SSN stored as a Varchar(9)
我試圖用短划線顯示存儲為Varchar(9)的SSN。
數據庫中的SSN存儲為varchar(9),不帶破折號。 它不存儲為數字,因為如果將其存儲為數字,則會刪除任何前導零。 我不能將DisplayFormat屬性與DataFormatString =“ {0:###-##-#####}”一起使用,因為這似乎僅在將SSN存儲為Long類型時才起作用。 因此,我正在嘗試為其創建顯示模板。 我已經創建了一個名為SSN的.cshtml文件,並將其放置在Shared文件夾內的一個名為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
設置為Copy to Output Directory
,將模板復制到輸出文件夾。
請按照以下步驟操作:
@Html.DisplayFor
和@model PFDTrustDomain.Client
不匹配,模板為Client,但是您使用SSN傳遞了字符串。 像@Html.DisplayFor
一樣更改@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外,還需要將字符串“顯示模板的名稱”添加到.cshtml文件中的DisplayFor方法中,如下所示:
<td>
@Html.DisplayFor(modelItem => item.SSN, "SSN")
</td>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.