我使用的是aspnet 5和MVC 6.
我使用 HERE 中的说明创建了一个视图组件,但是当我运行我的网站时出现错误
名为' XX'的视图组件无法找到。 AT
@Component.Invoke("XX"))
这是我项目的结构
namespace Test
{
public class XXViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
return View();
}
}
}
然后在views文件夹中我有Views / Assets / index.cshtml
<div>
<div class="col-md-4">
@Component.Invoke("XX"))
</div>
</div>
vc在
Views/Assets/Components/XX/default.cshtml
<div class="col-md-6" id="listOfCustomers">
<table class="table table-condensed">
<span> Test partial View</span>
</table>
</div>
答案 0 :(得分:3)
我有类似的问题。 帮助我的是您自己使用的页面底部(Avoiding magic strings):
删除&#39; ViewComponent&#39;类的名称后缀(以及构造函数) - 然后你会有:
public class XX : ViewComponent
在调用视图组件时使用nameof
:
@Component.Invoke(nameof(XX))
请勿忘记在主视图中使用using
视图组件(Views / Assets / index.cshtml) - 在您的情况下@using Test
这可能会帮助您并保持调用组件编译时保存。
正如Joe Audette指出的那样,视图可能位于一个不寻常的位置,但这会导致出现不同的错误消息。
答案 1 :(得分:0)
您是否将命名空间添加到_ViewImports.cshtml中?
@using Test
答案 2 :(得分:0)
我遇到了这个问题,因为我有一个类似的问题,但是我想在其中动态加载特定视图,并且需要在调用View()方法之前确保该视图存在。 这将让您知道该视图是否存在。虽然与问题不完全相关,但希望能对google发送来的人有所帮助:)
this.ViewEngine.FindView(this.ViewContext, "test", false).Success
答案 3 :(得分:0)
对我来说,解决此问题的方法是先清理然后重新生成解决方案。您可能要先尝试此操作,然后再尝试更改文件