Какой самый практичный способ добавить пользовательские свойства в широкий ViewDataDictionary?
Давайте предположим простой случай:
public ActionResult Index()
{
// ViewData["Title"] = "Home";
ViewData.Title = "Home";
return View();
}
Первое, что приходит на ум, это пользовательский класс и использование «new» в базовом контроллере приложения:
public class CustomDataDictionary : ViewDataDictionary
{
public string Title { get; set; }
}
public class ApplicationController : Controller
{
public new CustomDataDictionary ViewData { get; set;}
}
Я предполагаю, что вам также потребуется создать соответствующий CustomViewPage с тем же свойством, чтобы использовать словарь данных настраиваемого представления в представлениях.
Второе, что приходит на ум, - это создать класс ViewDataDictionaryExtensions.
В-третьих, используйте «Просмотреть модель». Моя претензия к моделям представления заключается в том, что создание ее всегда и передача ее в представление выглядит как повторение снова и снова в коде контроллера, по крайней мере по сравнению с двумя предыдущими вариантами.
Настоящая цель состоит в том, чтобы каждое приложение могло иметь базовый набор свойств в ViewData, которые имеют смысл для этой цели приложения. Я стараюсь не полагаться на ключи словаря, и было бы неплохо иметь реальные свойства, чтобы другие разработчики могли полагаться на них, чтобы знать, какие данные устанавливать. Кроме того, ключи могут быть легко написаны с ошибками.
Все три метода выполняют свою работу. Что сделали другие?