Вместо использования словаря ViewData, вы рассматривали возможность использования строго типизированных ViewModels?
Если у вас есть класс MyViewModel, вы можете сделать это из класса Controller:
public ViewResult Index()
{
return this.View(new MyViewModel());
}
MyViewModel может быть любым классом - для него не нужно реализовывать какие-либо конкретные интерфейсы или что-либо еще. Затем вы можете добавить все свойства этого класса, которые вам нужны в представлении.
Вы можете определить представление как строго типизированное представление на основе вашей ViewModel. В вашем файле .aspx вам нужно заменить это:
Inherits="System.Web.Mvc.ViewPage"
с этим:
Inherits="System.Web.Mvc.ViewPage<MyViewModel>"
Это означает, что теперь у вас будет строго типизированный доступ (включая IntelliSense) к ViewModel из View:
this.ViewData.Model.MyProperty
Я никогда не использую словарь ViewData, так как альтернатива, изложенная здесь, намного сильнее.