2012-05-01 2 views
2

У меня есть модель с номером, который я хотел бы форматировать определенным образом, когда он отображается в моем представлении.Номера формата в представлении MVC

[DisplayFormat(DataFormatString = "{### ##}")] 
[Display(Name = "Postnr")] 
public string CustomerZip; 

в представлении:

@Html.DisplayFor(modelItem => item.CustomerZip) 

В БДЕ значений сохраняются как #####, так что я получаю сообщение об ошибке при попытке такого подхода: «Входная строка не была в правильном формате ». Я подумал (или, скорее, надеялся), что DataFormatString переформатирует строку для меня.

Любые предложения о том, как это сделать, оценены наилучшим образом.

ответ

3

несколько вещей:

  1. В DataFormatString необходимо использовать {0: ...} строка стиля индексатора, как вы бы использовали в string.Format. Поэтому вам нужно будет сделать что-то вроде [DisplayFormat(DataFormatString="{0:### ##}"]. Если фигурные скобки должны быть буквальными, вы должны использовать [DisplayFormat(DataFormatString="{{{0:### ##}}}")]. Однако ...
  2. Нет такого символа формата # для строк. Это то, что вы использовали бы для числового типа. Если вы сохраняете значение как целое число, то вам повезло; просто измените тип CustomerZip на int.
  3. Если вы НЕ храните значение как целое число, а как строку (как обычно, обычно это связано с почтовыми кодами), тогда у вас есть больше проблемы. Как я уже сказал, у вас нет настроек пользовательского формата со строками. Вам нужно будет представлять CustomerZip как некоторый настраиваемый тип, который является IFormattable, который вы бы определили.
Смежные вопросы