asp.net mvc ViewData

У меня проблемы с синтаксическим анализом некоторых данных в PartialView. При синтаксическом анализе в Словаре свойства Values ​​и Keys устанавливаются в ViewData ... Как я могу объединить Словарь с ViewData ... чтобы я мог получить доступ к своим элементам Словаря с помощью таких ключей:

ViewData["key"] as IList<T>;

Вместо

ViewData["Values] <- Which is a List that Contains my list.

Я собираюсь использовать это так ... просто не хочу анонимных / магических имен строк.

<%: Html.EditorFor(x => x.GroupId, "SimpleSelectList", new { Selected = 10}) %>

Я надеюсь сделать что-то подобное. ‹%: Html.EditorFor (x => x.GroupId," ​​SimpleSelectList ", Html.AddViewData (Model.List))%>

С помощью этого метода расширения:

public static IDictionary AddViewData<T>(this HtmlHelper helper, T item)
{
    var dictionary = new Dictionary<string, object>();
    dictionary.Add(typeof(T).Name, item);
    return dictionary;
}

Тогда я всегда буду знать, что должен искать шаблон SimpleSelectList ... и мне не придется снова зависеть от еще одной волшебной строки ...

Или как люди это делают? Просто пытаюсь понять кодовую базу и то, как люди делают такие вещи ...


person Syska    schedule 16.01.2011    source источник


Ответы (1)


Лично я бы не стал использовать ViewData atall в этом контексте.

Намного чище и понятнее иметь модель представления, которая реализует ваш словарь как свойство. Затем вы можете передать эту модель представления вашему представлению и вашему частичному представлению ... или просто часть модели представления вашему частичному представлению (в зависимости от того, какие данные вам нужны).

person Jamie Dixon    schedule 16.01.2011
comment
Да ... это тоже была моя первая идея. Но как бы вы поступили в этом сценарии. Мне нужно разобрать 2 вещи. Список отображаемых объектов и выбранное значение (идентификатор). Как видите, я сомневаюсь, как правильно его структурировать. - person Syska; 16.01.2011