ASP.NET MVC: перечисления и ключи ViewData [] - PullRequest
1 голос
/ 05 августа 2009

Для ViewData, вместо использования строк в качестве ключа, я использую перечисления.Сейчас у меня есть один большой список, к которому можно получить доступ из любого места.Некоторые перечисления используются для нескольких пар Controller / View.Есть ли лучший способ классифицировать эти перечисления, а не просто постоянно растущий список?

Мне не нравятся жестко закодированные строки, общие для ViewData.Перечисления дают большой смысл.Я думал о категоризации перечислений по контроллеру.Это не очень хорошо работает, хотя конкретные значения перечисления могут быть общими для контроллеров и требуют некоторого централизованного расположения.

1 Ответ

4 голосов
/ 05 августа 2009

Вместо использования словаря 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, так как альтернатива, изложенная здесь, намного сильнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...