![](/img/trans.png)
[英]How to validate IEnumerable<string> property in Model in MVC 4
[英]How to format string property in MVC model class to be used in DisplayFor
好的,我整天都在尋找解決方案。
我有一個MVC模型類,它具有BIC屬性和NationalNumber屬性。 麻煩的是字符串值。 我想使用DisplayFor助手在視圖BUT上渲染屬性,並應用格式。
為了完整性:NationalNumber的格式為'00 .00.00-000.00',BIC的格式為AAAA BB CC
我嘗試使用DisplayFormat屬性注釋屬性,但似乎只能與DateTimes,數字值等一起使用。
[DisplayFormat(DataFormatString = "{0:##.##.##-###.##}")]
然后,我研究了如何創建一個自定義DisplayFormat屬性 ,但它也適用於適用於DateTimes,數字值等的模式。您仍然需要在自定義屬性的構造函數中提供一個DataFormatString值。 但是過濾器似乎不適用於字符串!
目前,我最終做了標記clientSide(帶有遮罩插件),但這並不是我真正想要的!
總結一下:我想使用@Html.DisplayFor(x=>x.BicNumber)
並以自定義格式對其進行呈現,最好在我的viewmodel上進行注釋,其中BicNumber是一個字符串。
提前致謝
如果您的NationalNumber
和BIC
是單獨的數據類型,則可以創建顯示模板 ,將它們存儲在~/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))
(注意大寫的String
, 這很重要 ),並明確指定它:
@Html.DisplayFor(x=>x.NationalNumber, "NationalNumber")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.