AddRazorPages 如何添加对 MVC + 视图的支持?

问题描述 投票:0回答:1

我想同时使用 Razor Pages 和“带有视图的 MVC”。

所以我使用了

services.AddRazorPages()
(提供了RazorPages和WebAPI),然后使用了
services.AddControllersWithViews()
(提供了MVC和MVC+视图)。

这有效。

但如果我省略后者,它也有效。 为什么?

来源显示

AddRazorPages
通过
services.AddMvcCore()
添加了基本的WebAPI支持。但是我不明白 mvc+views 是如何/在哪里添加的?我想知道这是否是预期的行为,或者我是否犯了配置错误。

asp.net-core asp.net-core-mvc asp.net-core-webapi razor-pages asp.net-core-7.0
1个回答
0
投票

实际上,如果你只使用AddMVCCore,它不会注册视图服务,这将使你的应用程序无法使用视图。

像下面的错误:

但是 services.AddRazorPages 将添加 RazorViewEngine,它包含使 MVC 视图正常工作的视图功能。

源代码:

/// <summary>
/// Register services needed for Razor Pages.
/// </summary>
/// <param name="builder">The <see cref="IMvcCoreBuilder"/>.</param>
/// <param name="setupAction">The action to setup the <see cref="RazorPagesOptions"/>.</param>
/// <returns>The <see cref="IMvcCoreBuilder"/>.</returns>
public static IMvcCoreBuilder AddRazorPages(
    this IMvcCoreBuilder builder,
    Action<RazorPagesOptions> setupAction)
{
    ArgumentNullException.ThrowIfNull(builder);
    ArgumentNullException.ThrowIfNull(setupAction);

    builder.AddRazorViewEngine();

    AddRazorPagesServices(builder.Services);

    builder.Services.Configure(setupAction);

    return builder;
}

因此,如果您在 MVC 应用程序中使用以下代码,它也会很好地工作。

builder.Services.AddMvcCore().AddRazorViewEngine();
© www.soinside.com 2019 - 2024. All rights reserved.