如何格式化要在DisplayFor中使用的MVC模型类中的字符串属性

时间:2014-10-07 16:21:54

标签: c# asp.net-mvc model-view-controller string-formatting displayformat

好的,我一直在为这项简单的任务寻找解决方案。

我有一个mvc模型类,它有一个BIC属性和一个NationalNumber属性。麻烦是字符串值。 我想使用DisplayFor帮助器在视图BUT上呈现属性,并应用格式。

为完整性:NationalNumber的格式为'00 .00.00-000.00',BIC的格式为AAAA BB CC

我尝试使用 DisplayFormat 属性注释我的属性,但这似乎只适用于DateTimes,数值等等。

[DisplayFormat(DataFormatString = "{0:##.##.##-###.##}")]

然后我查看creating a custom DisplayFormat attribute,但这也适用于适用于DateTimes,数值等的模式。您仍然需要在您的构造函数中提供 DataFormatString 值自定义属性。但过滤器似乎不适用于字符串!

目前我最终做了标记clientSide(带有掩码插件),但这不是我想要的!

总结一下:我想使用@Html.DisplayFor(x=>x.BicNumber)并使用自定义格式呈现它,最好在我的viewmodel上注释,BicNumber是一个字符串。

提前致谢

1 个答案:

答案 0 :(得分:1)

如果您的NationalNumberBIC是不同的数据类型,则可以create display templates将其存储在~/Views/Shared/DisplayTemplates/NationalNumber.cshtml~/Views/Shared/DisplayTemplates/BIC.cshtml下,然后它会自动生效如你所愿。

如果您希望将这些属性保留为字符串,则自动方法不适合您,因为为string.cshtml创建的显示模板会影响项目中的所有字符串。

因此,创建一个名为~/Views/Shared/DisplayTemplates/NationalNumber.cshtml的显示模板,您可以在其中手动输出部分数字:

@model string
@String.Format("{0}.{1}.{2}-{3}.{4}", Model.Substring(0, 2), Model.Substring(2, 2), Model.Substring(4, 2), Model.Substring(6, 3), Model.Substring(9, 2))

(请注意大写的Stringit is important)并明确指定:

@Html.DisplayFor(x=>x.NationalNumber, "NationalNumber")