如何在同一个项目中同时拥有 MVC 和 Razor 页面?

Posted

技术标签:

【中文标题】如何在同一个项目中同时拥有 MVC 和 Razor 页面?【英文标题】:How can have Both MVC and Razor page in the same Project? 【发布时间】:2022-01-03 08:46:06 【问题描述】:

我有一个带有 Razor 页面的 ASP.NET Core 应用程序,我想在其中利用 MVC,所以我添加了带有 Views 的 Controllers 文件夹,并将 services.AddMvc() 添加到启动和另一个端点,然后尝试运行如果它有效。只需运行项目,我想测试它是否返回简单视图,然后在默认地址后添加控制器名称和操作,但它显示 “找不到此本地主机页面”

您能帮我配置我的应用吗?

【问题讨论】:

我假设你使用的是visual studio,当你创建一个新项目时,你可以选择MVC作为项目类型,VS会为你做很多事情,比如创建一个有相应视图的HomeController !看到这张图片,我正在创建一个新项目并选择 MVC imgur.com/a/65S7J3x 是的,你是对的。我现在测试一下 docs.microsoft.com/en-us/aspnet/core/fundamentals/… 通过.AddRazorPages() .AddControllersWithViews() 【参考方案1】:

如果要将 MVC 添加到 Razor 页面项目:

1.需要在startup.cs中添加services.AddControllers();ConfigureServices并配置mvc路由:

public void ConfigureServices(IServiceCollection services)

    services.AddRazorPages();
    services.AddControllers();
    ...


// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

    ...
    app.UseEndpoints(endpoints =>
    
        endpoints.MapRazorPages();
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "controller=Home/action=Index/id?");
    );

2.您需要添加一个名为Controllers的文件夹和一个名为Views的文件夹。

然后将包含_Layout.cshtml_ValidationScriptsPartial.cshtmlPages/Shared文件夹复制到Views文件夹。

然后将Pages/_ViewImports.cshtml 复制到Views/_ViewImports.cshtmlPages/_ViewStarts.cshtmlViews/_ViewStarts.cshtml

这是一个项目结构:

【讨论】:

我还有一个问题如果您回答我,我将不胜感激。我将按照您的指南进行操作,现在我既想开始我的项目,又想将视图中的索引作为第一页打开。但现在页面文件夹中的 Index.csHtml 排在第一位。 你可以尝试在Pages/Index中使用@page "RazorPage/Index",这样Views/Index会比Pages/Index更引人注意。另外,如果你想去Pages/Index,你需要使用@ 987654341@. 好的,我明白了,坦克

以上是关于如何在同一个项目中同时拥有 MVC 和 Razor 页面?的主要内容,如果未能解决你的问题,请参考以下文章

MVC3.0 中Razor 学习

如何使用 jquery 或 ajax 在 c#/asp.net 中为 MVC 项目更新 razor 部分视图

如何在 ASP.NET MVC 4 Razor 项目的视图中显示集合?

如何在 Razor 页面中使用 MVC 部分视图和布局

在 MVC/Razor 中,如何获取多个复选框的值并将它们全部传递给控制器​​?

MVC Razor,包含来自另一个项目的 JS/CSS 文件