Не могу получить недвижимость для просмотра - PullRequest
1 голос
/ 29 октября 2011

У меня есть модель с 3 свойствами, как я уже упоминал в предыдущем вопросе (это, конечно, другой вопрос), модель называется «Нечто», и она имеет 3 свойства:

int SomethingID
string Name
List<System.Drawing.Color>

(конечно, это не оригинальный код, хотите сохранить некоторые читатели, сохранив некоторую длину)

И мой Инициализатор это:

protected override void Seed(DatabaseContext context)
{
    var somethings = new List<Something>
    {
        new Something
        {
            Name="blah blah", Colors= { Color.Black, Color.Red }
        }
    };
        somethings.ForEach(s => context.Somethings.Add(s));
        context.SaveChanges();

        base.Seed(context);
}

Когда я пытаюсь получить эти цвета внутри представления, цвета пусты. Если я установлю точку останова внутри инициализатора сразу после того, как я сконструировал somethings, я получу свойство с именем Colors с числом 2 (так что все в порядке, у меня есть объект с моим ID, именем и цветами). *

Но когда он находится внутри представления, отладчик показывает, что счетчик Colors равен 0, и, как вы можете догадаться, список пуст.

внутри вида

    Colors:
    @foreach (var itemColor in item.Colors)
    {
        itemColor.ToString();
    }

Желаемый результат: Colors: Black Red

Текущий результат: Colors: (пусто)

1 Ответ

1 голос
/ 29 октября 2011

Вы просто перечисляете цвета в блоке кода, но не записываете их на экран. попробовать

Colors:
    @foreach (var itemColor in item.Colors)
    {
        @(itemColor.ToString())
    }

Мое любимое место для быстрого ознакомления с синтаксисом бритвы. http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx

EDIT

Измените ваш объект, включив в него это строковое свойство, которое будет переводить именованные цвета в базу данных и обратно в ваше свойство списка цветов. Таким образом, ваш объект полностью контролирует перевод информации в свойства, и вы можете продолжать использовать их как обычно.

        public string SavedColors
        {
            get { return Colors.Aggregate("", (current, color) => current + (color.Name + ",")).TrimEnd(','); }
            set
            {
                Colors = value.Split(',').Select(Color.FromName).ToList();
            }
        }
        [NotMapped]
        public List<System.Drawing.Color> Colors { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...