假设我有一个ASP.NET Core7MVC项目,其中同时支持页面和视图.如果一个页面和一个视图指向同一个终结点,哪一个会优先?为什么?因此,为了进一步扩展,我有一个Razor类库,它包含一个Pages >> Account >> Login.cshtml
的Razor页面(和代码隐藏文件Login.cshtml.cs
).
这是为了充当"默认"登录行为.同时,我在AccountController
内设置了一个控制器操作,以查看是否可以覆盖该页面.但页面似乎总是排在首位.
以下是我的代码:
Program.cs
个
builder.Services.AddMvc();
builder.Services.AddRazorPages().AddRazorRuntimeCompilation();
// ...
app.MapControllerRoute(name: "area-default", pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
app.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
// I incorrectly assumed that by placing this after the controller routes, the MVC routes would take precedence
app.MapRazorPages();
AccountController.cs
个
using Microsoft.AspNetCore.Mvc;
namespace RazorClassLibrary.Controllers
{
public class AccountController : Controller
{
[HttpGet]
public IActionResult Login()
{
return Content("This is an override from the RCL.");
}
}
}
当我注释掉第app.MapRazorPages()
行时,MVC路由就会如期生效.但是,如果这条线存在,则页面总是胜过控制器操作.
我的目标是让控制器操作覆盖页面.这个是可能的吗?有什么 idea 吗?