加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-core-mvc – 区域中的ViewComponents

发布时间:2020-12-16 07:29:33 所属栏目:asp.Net 来源:网络整理
导读:我可能做错了(我找不到任何其他方式的文档). 在区域中创建ViewComponent时,搜索路径不正确: namespace HelloWorld{ [Area("Test")] public class HelloViewComponent : ViewComponent { public IViewComponentResult Invoke() { return View(); } }} 而不是
我可能做错了(我找不到任何其他方式的文档).
在区域中创建ViewComponent时,搜索路径不正确:

namespace HelloWorld
{
    [Area("Test")]
    public class HelloViewComponent : ViewComponent
    {
        public IViewComponentResult Invoke()
        {
            return View();
        }
    }
}

而不是在/Areas/Test/Views/Components/Hello/Default.cshtml中搜索视图,而是抛出以下异常:

InvalidOperationException: The view 'Components/Hello/Default' was not found. The following locations were searched:
/Views/Home/Components/Hello/Default.cshtml
/Views/Shared/Components/Hello/Default.cshtml.

我通过执行以下操作来调用视图:(在/Views/Home/Index.cshtml中)

@Component.Invoke("Hello")

似乎没有办法包含一个区域来调用视图.

关于从区域内调用ViewComponent的正确方法的任何想法,或者如果上述不正确并且我犯了错误.

https://github.com/aspnet/Mvc/issues/2640

解决方法

Area属性只能与控制器一起使用.当您对区域内的视图发出请求并且此视图中包含任何视图组件时,MVC会按特定顺序查找视图组件的视图.
以下是当请求与基于区域的控制器与非区域控制器匹配时如何搜索视图组件视图的差异.

例:

>查看组件的视图搜索路径,例如/ Admin / Home / Index,其中Admin是一个区域.

> /Areas/Admin/Views/Home/Components/Products/Default.cshtml
> /Areas/Admin/Views/Shared/Components/Products/Default.cshtml
> /Views/Shared/Components/Products/Default.cshtml.

>查看组件的视图搜索路径,例如/ Home / Index(非区域请求)

> /Views/Home/Components/Products/Default.cshtml> /Views/Shared/Components/Products/Default.cshtml.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读