在ASP.NET Core Razor Pages中,可以通过使用分离EF和视图的模型来实现代码的解耦。以下是一个示例解决方法:
首先,创建一个名为"Models"的文件夹,用于存放所有的模型类。
在"Models"文件夹中创建一个名为"User.cs"的类,表示用户模型:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
接下来,在Pages文件夹下创建一个名为"Users"的文件夹,用于存放所有与用户相关的页面。
在"Users"文件夹中创建一个名为"Index.cshtml.cs"的类,表示用户列表页面的后台逻辑:
public class IndexModel : PageModel
{
private readonly AppDbContext _context;
public IndexModel(AppDbContext context)
{
_context = context;
}
public IList Users { get; set; }
public async Task OnGetAsync()
{
Users = await _context.Users.ToListAsync();
}
}
在"Users"文件夹中创建一个名为"Index.cshtml"的视图文件,表示用户列表页面的前端代码:
@page
@model IndexModel
User List
Id
Name
Age
@foreach (var user in Model.Users)
{
@user.Id
@user.Name
@user.Age
}
最后,在Startup.cs文件中配置EF数据库上下文:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddRazorPages();
}
这样,你就可以在ASP.NET Core Razor Pages中实现分离EF和视图的模型。在这个示例中,用户模型被定义在"Models"文件夹中,后台逻辑和前端代码分别位于"Users"文件夹中的Index.cshtml.cs和Index.cshtml文件中。同时,EF数据库上下文也需要在Startup.cs文件中进行配置。