HTML форматирование в доменных классах - PullRequest
1 голос
/ 27 мая 2009

У меня есть простой адресный объект в моем домене, который имеет метод ToString(), который возвращает адрес следующим образом:

123 Test Ave
Appt 1A
Спокан, WA 99201

Мы будем показывать это на веб-странице несколько раз, поэтому имеет смысл добавить куда-нибудь функциональность для отображения адреса в формате HTML, но если я добавлю ToStringHtmlFormat() в мой класс домена, он начнет запускаться пахнуть смешно.

Возможно, я немного придирчив, но где / как вы предлагаете выполнить это, чтобы мой класс домена не содержал никаких HTML-документов?

спасибо за ваши предложения ...

Ответы [ 2 ]

6 голосов
/ 27 мая 2009

У вас может быть HTMLWriter, который может "посетить" классы домена и распечатать материал. Классам вашего домена требуется метод Accept для принятия посетителя (шаблон посетителя).

С точки зрения гибкости и удобства обслуживания я бы остановился на некотором шаблонизаторе, который содержит ваш HTML и доступ к тем свойствам, которые вы хотите распечатать. Часто на более сложных сайтах также вводится нечто, называемое ViewModel, которое подготавливает данные для отображения таким образом, чтобы они были легко доступны для HTML-движков пользовательского интерфейса.

1 голос
/ 31 мая 2009

Вы можете добавить метод расширения:

public static class AddressHelpers
{
  public static string ToStringHtmlFormat (this Address address)
  {
      string result = address.Address1;
      // snip..
      return result;
  }
}

и теперь вы можете контролировать, когда и где метод расширения будет включен в ваш проект (например, только в вашем веб-приложении).

...