Razor 视图中 foreach 循环中的 Assembly Not Referenced 编译错误
Assembly Not Referenced compilation error in foreach loop in Razor view
编辑:我检查并尝试了在 SE 上发现的许多其他程序集未引用问题,但我没有发现很多处理应该是内置程序集的问题 (System.Collections.Generic.List<t>
)。这使得手动添加或删除引用等变得困难
我正在尝试根据 API 响应构建 PartialView。我已确认响应正确且格式正确,我的对象正在正确构建,但是当我生成局部视图时,显示的是编译错误。
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>
这里是数据 class 定义:
public class Data
{
public string Key { get; set; }
public string Value { get; set; }
public string Source { get; set; }
public Status Status { get; set; }
}
其中 Status 是一个枚举。在将模型对象传递给 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;
}
我已经弄明白了,而且非常简单。我仍然不知道为什么这是必要的,但是向 web.config
添加一个新的 assembly
标签似乎已经解决了这个问题。我添加的标签在<compilation>
标签下,如下:
<assemblies>
<add assembly="System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
简单,但已解决错误并且视图现在可以正确呈现。
这是因为在 Razor 引擎中添加引用的方式。
此问题已报告 https://github.com/Antaris/RazorEngine/issues/415。
我最近遇到了同样的问题,这里有最好的描述:https://docs.microsoft.com/en-us/dotnet/csharp/misc/cs0012
问题来自 PartialView.cshtml 和 MainView.cshtml 中的两个不同引用,每个引用都引用 Razor 页面中两个不同的 类;交集是两个视图中的 foreach 循环。
解决方案是再添加一行:
<add assembly="NameOfTheProject.Entities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
到 Views 文件夹下 Web.config 中已有的程序集信息。
编辑:我检查并尝试了在 SE 上发现的许多其他程序集未引用问题,但我没有发现很多处理应该是内置程序集的问题 (System.Collections.Generic.List<t>
)。这使得手动添加或删除引用等变得困难
我正在尝试根据 API 响应构建 PartialView。我已确认响应正确且格式正确,我的对象正在正确构建,但是当我生成局部视图时,显示的是编译错误。
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>
这里是数据 class 定义:
public class Data
{
public string Key { get; set; }
public string Value { get; set; }
public string Source { get; set; }
public Status Status { get; set; }
}
其中 Status 是一个枚举。在将模型对象传递给 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;
}
我已经弄明白了,而且非常简单。我仍然不知道为什么这是必要的,但是向 web.config
添加一个新的 assembly
标签似乎已经解决了这个问题。我添加的标签在<compilation>
标签下,如下:
<assemblies>
<add assembly="System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
简单,但已解决错误并且视图现在可以正确呈现。
这是因为在 Razor 引擎中添加引用的方式。 此问题已报告 https://github.com/Antaris/RazorEngine/issues/415。
我最近遇到了同样的问题,这里有最好的描述:https://docs.microsoft.com/en-us/dotnet/csharp/misc/cs0012
问题来自 PartialView.cshtml 和 MainView.cshtml 中的两个不同引用,每个引用都引用 Razor 页面中两个不同的 类;交集是两个视图中的 foreach 循环。
解决方案是再添加一行:
<add assembly="NameOfTheProject.Entities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
到 Views 文件夹下 Web.config 中已有的程序集信息。