Подтвердить что ты не робот

Ошибка сборки в сборке Not Referated в цикле foreach в режиме Razor

РЕДАКТИРОВАТЬ: Я проверил и попытался много других проблем, связанных с сбоями, которые были обнаружены на SE, но я не нашел много вопросов о том, что должно быть встроенной сборкой (System.Collections.Generic.List<t>). Это затрудняет возможность вручную добавлять или удалять ссылку и т.д.

Я пытаюсь создать PartialView из ответа API. Я подтвердил, что ответ правильный и хорошо сформированный, мои объекты строятся правильно, но когда я создаю Partial View, вместо этого отображается ошибка компиляции.

Compiler Error Message: CS0012: The type 'System.Collections.Generic.List`1<T0>' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

Вот вид Razor:

@using OpsComponent
@model OpsComponent.ComponentData

<div class="row">
    <div class="col-md-6">
        <ul class="list-group">
            @foreach (Data metric in Model.Metrics)
            {
                <li class="list-group-item">
                    <span class="badge">@metric.Value</span>
                    @metric.Key<br/>
                </li>
            }

        </ul>
    </div>
</div>

И вот определение класса данных:

public class Data
    {
        public string Key { get; set; }
        public string Value { get; set; }
        public string Source { get; set; }
        public Status Status { get; set; }

    }

Где Status - это перечисление. Я проверил в Отладке, что объект Model является правильным и хорошо сформированным, прежде чем он будет передан PartialView, но вместо правильного макета, я получу экран ошибки сервера и ответ 500.

в строке @foreach (Data metric in Model.Metrics)

Код действия для полноты:

public ActionResult ComponentDetail(string id)
        {
            var data = Client.GetComponentData(id.DecodeBase64ToString());
            var partialViewResult = PartialView("_ComponentDetail", data);
            return partialViewResult;
        }
4b9b3361

Ответ 1

Я понял это, и это было чертовски просто. Я до сих пор не знаю, почему это необходимо, но добавление нового тега assembly в web.config, похоже, решило эту проблему. Добавленный тег находился под тегом <compilation> и следующим образом:

<assemblies>
    <add assembly="System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>

Простой, но разрешил ошибку, и представление теперь корректно отображается.