在Core 2中使用组件时,如何整理视图的位置?

时间:2019-06-11 09:44:47

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

到目前为止,我发现组件完全是经过精心设计的。

我想要的是能够将html代码块转储到页面上。以前,我要么做HtmlHelper.MyHelper(),要么直接渲染部分。但是在核心2中,我们必须使用看起来很糟糕的组件。

因此,我在ViewComponents文件夹中创建了一个ViewComponent:

public async Task<IViewComponentResult> InvokeAsync()
{
    return View("CatTable");
}

我打算在我的站点周围放置一个 lot 个唯一的表,每个表的配置都与列,排序选项,ajax等有所不同。

首先,我无法将ajax方法放入看起来很荒谬的组件中,因为该逻辑是独立的并且对于组件而言是唯一的。因此,我制作了一个名为AjaxController的控制器,该控制器上具有方法GetCatTableData(),以便在呈现时返回表的json。

出于某些奇怪的未知原因,组件的默认命名约定是Shared>Components>ComponentName>Default.cshtml。这不仅麻烦,因为每个组件都必须有一个文件夹,而且名称Default.cshtml使得打开5个Default.cshtml文件时很难知道您在Visual Studio中正在编辑什么。

我要做的是创建一个文件夹Shared>Tables并将所有我的表(本质上来说,我的组件是用于呈现html表的组件)放入其中。

但是,当我这样做时,视图组件似乎找不到它们。我返回了View("CatTable")create Shared>Tables>CatTable.cshtml,但它在错误的位置。

即使将文件夹添加到要搜索视图的位置列表中,它仍然找不到,因为它坚持将组件名称放在路径的前面。

  

System.InvalidOperationException:'该视图   找不到“组件/ CatTableComponent / CatTable”。下列   搜索位置:   /Views/MyController/Components/CatTableComponent/CatTable.cshtml   /Views/Shared/Components/CatTableComponent/CatTable.cshtml   /Pages/Shared/Components/CatTableComponent/CatTable.cshtml   /Views/Shared/Tables/Components/CatTableComponent/CatTable.cshtml'

您可以看到最后一行是我将其添加为搜索文件夹的位置,它已将Components/CatTableComponent插入路径。

有什么办法可以消除这种疯狂,只需要在表格中进行搜索?

0 个答案:

没有答案