gpt4 book ai didi

c# - 在 ASP.NET MVC 中找不到具有覆盖 View 路径(位置格式)的共享布局

转载 作者:太空狗 更新时间:2023-10-29 21:54:34 24 4
gpt4 key购买 nike

我正在对我的 View 、 Controller 和模型进行分组。 结构是

~/Controllers
-- /_Shared
-- -- /Views
-- -- /Content
-- -- /Scripts
-- /Home
-- -- /Models
-- -- /Content
-- -- /Scripts
-- -- /Views
-- -- HomeController.cs
-- /Account
-- -- /Models
-- -- /Views
...

View 和部分 View 有效,但布局(主视图)无效。当我在 .cshtml 文件中指定布局时,例如:

@{ Layout = "SimpleSharedLayout"; }

我收到此错误:在以下路径中找不到布局页面“SimpleLayout”:

"~/Controllers/Account/Views/SimpleSharedLayout".

Asp.NET 仅搜索当前 Controller 目录中的布局,不查看共享文件夹 *(位于 ~/Controllers/_Shared/Views)*

虽然这工作得很好。

@Html.Partial("SharedPartialView")

我必须指定具有完整路径的布局,如

@{ Layout = "~/Controllers/_Shared/Views/SimpleSharedLayout.cshtml"; }

这不是一件难事,但我为无法让它工作而疯狂。

使用 IIS Express、VS 2012、.NET 4.5

你知道我错过了什么吗?

我的 View 引擎:

public class AreaViewEngine : RazorViewEngine
{
public AreaViewEngine()
{
AreaViewLocationFormats = new[] {
"~/Controllers/{1}/Views/{0}.cshtml",
"~/Controllers/_Shared/Views/{0}.cshtml"};

ViewLocationFormats = AreaViewLocationFormats;

AreaMasterLocationFormats = new[] { "~/Controllers/_Shared/Views/{0}.cshtml" };

MasterLocationFormats = AreaMasterLocationFormats;

AreaPartialViewLocationFormats = new[] { "~/Controllers/_Shared/Views/{0}.cshtml",
"~/Controllers/{1}/Views/{0}.cshtml"};

PartialViewLocationFormats = AreaPartialViewLocationFormats;
}
}

最佳答案

恕我直言,您正在与框架的约定作斗争。我的建议是通过创建区域以针对此类场景的预期方式使用该框架。

我知道这可能不是您想要的答案,但我觉得您所描述的是 Areas to a T。

关于c# - 在 ASP.NET MVC 中找不到具有覆盖 View 路径(位置格式)的共享布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15753626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com