Сложные типы, связанные с моделью, не должны быть абстрактными или значениями и должны иметь конструктор без параметров

В следующем теге привязки есть ребенок и внук. У внука есть дальний фоновой градиент. Ребенок на ближнем фоне прозрачен, но имеет переход к градиенту. При наведении непрозрачность ребенка переходит от 0 до 1 в течение 1 секунды.

Вот CSS:

.bkgrndfar {
  position:absolute;
  top:0;
  left:0;
  z-index:-2;
  height:100%;
  width:100%;
  background:linear-gradient(#eee, #aaa);
}

.bkgrndnear {
  position:absolute;
  top:0;
  left:0;
  height:100%;
  width:100%;
  background:radial-gradient(at 50% 50%, blue 1%, aqua 100%);
  opacity:0;
  transition: opacity 1s;
}

a.menulnk {
  position:relative;
  text-decoration:none;
  color:#333;
  padding: 0 20px;
  text-align:center;
  line-height:27px;
  float:left;
}

a.menulnk:hover {
  color:#eee;
  text-decoration:underline;
}

/* This transitions child opacity on parent hover */
a.menulnk:hover .bkgrndnear {
  opacity:1;
}

И это HTML:

<a href="#" class="menulnk">Transgradient
<div class="bkgrndfar">
  <div class="bkgrndnear">
  </div>
</div>
</a>

Вышеупомянутая проверка протестирована только в последней версии Chrome. Это прежде, чем наведите указатель мыши на полпути на ползунках и полностью перевернутые наводящие изображения:

Before [/g0] Halfway [/g1] After [/g2]

-1
задан Kirk Larkin 17 January 2019 в 13:39
поделиться

1 ответ

Не удалось создать экземпляр отношений. ViewModels.AddGameViewModel. Сложные типы, связанные с моделью, не должны быть абстрактными или значениями и должны иметь конструктор без параметров.

Давайте попробуем устранить эту ошибку.

Не удалось создать экземпляр отношения .ViewModels.AddGameViewModel.

Довольно очевидно: компоненты привязки к модели пытаются создать экземпляр вашего типа, но не удалось.

Связанные с моделью сложные типы

«Связанный с моделью» означает, что они связаны конвейером ASP.NET. «сложные типы» - это в основном любые типы, которые не являются «базовыми», например string или int. Ваши модельные классы являются сложными типами.

не должно быть абстрактным

Система привязки модели захочет иметь возможность создавать экземпляры класса, поэтому она не может быть абстрактной; это должно быть конкретным. Все типы, которые вы показываете, являются конкретными, так что это не проблема.

или типы значений

Нельзя использовать типы struct с привязкой к модели; это только одно из его ограничений. К счастью, все ваши типы - это классы, так что вы можете игнорировать это.

и должен иметь конструктор без параметров.

ASP.NET не знает, как передавать параметры конструкторам моделей. Он может делать только эквивалент new T(), поэтому все типы вашей модели должны определять конструктор с нулевыми параметрами. Это причина, по которой вы видите ошибку; ваш класс AddGameViewModel определяет только этот конструктор:

public AddGameViewModel(IEnumerable<GameCategory> categories)

Одна из особенностей языка C # заключается в том, что, когда вы не указываете конструктор вручную, он добавляет для вас конструктор по умолчанию. Когда вы определяете конструктор в своем коде, этот конструктор по умолчанию не добавляется.

Во всех других ваших моделях вы не определяете никаких конструкторов, поэтому компилятор добавляет для вас модель по умолчанию. В случае AddGameViewModel вы добавили конструктор, поэтому для решения проблемы вы также должны добавить конструктор по умолчанию:

public AddGameViewModel()
{
}
0
ответ дан Paul Turner 17 January 2019 в 13:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: