0

好的,我整天都在为这个简单的任务寻找解决方案。

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

为了完整性:NationalNumber 的格式是 '00.00.00-000.00' ,BIC 的格式是 AAAA BB CC

我尝试使用DisplayFormat属性注释我的属性,但这似乎只适用于日期时间、数值等,..

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

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

目前我最终做了标记客户端(带有掩码插件),但这并不是我真正想要的!

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

提前致谢

4

1 回答 1

1

如果您的NationalNumberandBIC是单独的数据类型,您可以创建显示模板,将它们存储在~/Views/Shared/DisplayTemplates/NationalNumber.cshtmland下~/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))

(注意大写String这很重要)并明确指定:

@Html.DisplayFor(x=>x.NationalNumber, "NationalNumber")
于 2014-10-07T16:36:09.600 回答