Серьезно, почему представление должно делать это?
Сопоставьте вашу базовую модель, которая имеет объект даты и времени, с вашей моделью представления MVC.
//core model
public class Person
{
public DateTime? BirthDate { get; set;}
}
//view model
public class PersonForm
{
public string BirthDate { get; set; }
}
Таким образом, отображение может выглядеть так:
public interface IDomainToViewMapper<TModel, TViewModel>
{
/// <summary>
/// Use an automapper or custom implementation to map domain model to presentation model.
/// </summary>
/// <param name="source">domain model</param>
/// <returns>presentation model</returns>
TViewModel MapDomainToView(TModel source);
}
public interface IPersonMapper : IDomainToViewMapper<Person, PersonForm>
{
}
public class PersonMapper : IPersonMapper
{
#region IDomainToViewMapper<Person,PersonForm> Members
public PersonForm MapDomainToView(Person source)
{
PersonForm p = new PersonForm();
if (source.BirthDate.HasValue)
{
p.BirthDate = source.BirthDate.Value.ToShortDateString();
}
return p;
}
#endregion
}
А действие вашего контроллера может выглядеть так:
public ActionResult Index()
{
Person person = //get person;
var personForm = _personMapper.MapDomainToView(person);
return View(personForm)
}
Тогда вам вообще не придется менять пример вида.
Из главы 2, MVC 2 в действии (Мэннинг)
public class CustomerSummary
{
public string Name { get; set; }
public bool Active { get; set; }
public string ServiceLevel { get; set; }
public string OrderCount { get; set;}
public string MostRecentOrderDate { get; set; }
}
Эта модель намеренно проста; он состоит в основном из строк. Это то, что мы представляем,
в конце концов: текст на странице. Логика, которая отображает данные в этом объекте, будет
прямой; представление только выведет это. Модель презентации предназначена для
минимизировать принятие решений в представлении.