一个名为' XX'的视图组件无法找到

时间:2015-11-25 18:04:59

标签: asp.net-mvc asp.net-core-mvc

我使用的是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>

4 个答案:

答案 0 :(得分:3)

我有类似的问题。 帮助我的是您自己使用的页面底部(Avoiding magic strings):

  • 删除&#39; ViewComponent&#39;类的名称后缀(以及构造函数) - 然后你会有:

    public class XX : ViewComponent
    
  • 在调用视图组件时使用nameof

    @Component.Invoke(nameof(XX))
    
  • 请勿忘记在主视图中使用using视图组件(Views / Assets / index.cshtml) - 在您的情况下@using Test

    < / LI>

这可能会帮助您并保持调用组件编译时保存。

正如Joe Audette指出的那样,视图可能位于一个不寻常的位置,但这会导致出现不同的错误消息。

答案 1 :(得分:0)

您是否将命名空间添加到_ViewImports.cshtml中?

@using Test

答案 2 :(得分:0)

我遇到了这个问题,因为我有一个类似的问题,但是我想在其中动态加载特定视图,并且需要在调用View()方法之前确保该视图存在。 这将让您知道该视图是否存在。虽然与问题不完全相关,但希望能对google发送来的人有所帮助:)

this.ViewEngine.FindView(this.ViewContext, "test", false).Success

答案 3 :(得分:0)

对我来说,解决此问题的方法是先清理然后重新生成解决方案。您可能要先尝试此操作,然后再尝试更改文件