我不喜欢使用预先捆绑的AddMvc()
,而是更喜欢使用AddMvcCore()
。
话虽如此,我想知道如何使用AddRazorPages()
与AddMvcCore()
一起使用新的AddRazorPages()
。
例如,如果我们做了一个"裸骨"将中间件配置为仅使用official repository
中的// loaded the NuGet package Microsoft.AspNetCore.Mvc.RazorPages
public void ConfigureServices(IServiceCollection services)
{
services.AddMvcCore()
.AddRazorPages();
}
foo.cshtml
创建.\Pages\
页面并将其放入\Foo
目录后,当我导航到URL @page
@model IndexModel
@using Microsoft.AspNetCore.Mvc.RazorPages
@functions {
public class IndexModel : PageModel
{
public string Message { get; private set; } = "In page model: ";
public void OnGet()
{
Message += $" Server seconds { DateTime.Now.Second.ToString() }";
}
}
}
<h2>Hello World</h2>
<p>
@Model.Message
</p>
时,它返回404(找不到页面)。
即可。\页面\ Foo.cshtml
@model IEnumerable<TimeTrackerProjectV2.Models.TimesheetInfoAndTimeSheet_DetailsViewModel>
上面的示例页面取自Microsoft Documents: Introduction to Razor Pages in ASP.NET Core
有没有人想出这个,或者知道缺少什么?我认为路由存在问题。
答案 0 :(得分:4)
事实证明有两个问题。
(1)我需要运行MVC中间件(呃!)
form1
(2)然后我抛出异常,迫使我必须包括public void Configure(IApplicationBuilder app, ... )
{
app.UseMvc();
}
.AddAuthorization()
这里它被简化为一个简单的控制台应用程序:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvcCore()
.AddAuthorization()
.AddRazorPages();
}
答案 1 :(得分:1)
看一下source code for AddMvc
我们可以看到它在内部调用AddMvcCore
,然后继续添加其他项目。所以,如果我是你,我会开始添加这些项目,直到你让Razor Pages工作,可能专注于Razor部分。例如:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvcCore()
.AddViews()
.AddRazorViewEngine()
.AddRazorPages();
}