将ASP.NET应用迁移至.NET Core是否必须使用MVC?
完全不需要。你的简单应用(3个页面+存储过程调用)完全可以用更轻量、更贴合小项目的方案,比如Razor Pages,甚至纯静态页面配合后端接口的方式,没必要强行套MVC的三层架构。
下面是适合你场景的手动迁移步骤(避开迁移助手,全程可控):
创建基础Razor Pages项目
直接新建一个.NET Core Razor Pages项目,这种结构比MVC简洁得多,没有Controller、Model、Views的强制拆分——每个页面对应一个.cshtml(视图)和.cshtml.cs(后端逻辑),和你原应用的简单页面模式更匹配。迁移页面内容
把原ASP.NET页面的HTML代码复制到新的.cshtml文件里,替换掉WebForms专属控件(比如<asp:TextBox>)为标准HTML元素,原页面的事件逻辑(比如按钮点击)可以移到.cshtml.cs的后台方法中,用OnGetAsync/OnPostAsync处理GET/POST请求。迁移存储过程调用
原应用的存储过程调用逻辑几乎可以直接复用,推荐用Microsoft.Data.SqlClient或者轻量的Dapper来实现:- 安装对应NuGet包(比如
Dapper或Microsoft.Data.SqlClient) - 在
appsettings.json中配置数据库连接字符串 - 在页面的后台类中注入
IConfiguration获取连接字符串,然后编写调用代码:using (var conn = new SqlConnection(_configuration.GetConnectionString("YourDbConn"))) { // 调用存储过程获取数据 var data = await conn.QueryAsync<YourDataModel>("GetUserData", commandType: CommandType.StoredProcedure); // 调用存储过程更新数据 await conn.ExecuteAsync("UpdateUserData", new { Id = 1, Name = "NewName" }, commandType: CommandType.StoredProcedure); }
- 安装对应NuGet包(比如
配置服务和中间件
在Program.cs中确保添加了Razor Pages支持和必要的服务:// 注册Razor Pages服务 builder.Services.AddRazorPages(); // 可选:注册数据库连接,方便依赖注入 builder.Services.AddScoped<IDbConnection>(sp => new SqlConnection(builder.Configuration.GetConnectionString("YourDbConn")));然后在中间件管道中启用Razor Pages:
app.MapRazorPages();测试验证
逐个测试页面的展示和数据操作,调整页面路由、表单提交逻辑等,确保和原应用行为一致。
补充:如果你的原应用是WebForms,Razor Pages的代码后置模式和WebForms更接近,迁移成本比MVC低很多,而且手动迁移的过程能让你完全理解每一步的变化,符合你不想用迁移助手的需求。
内容的提问来源于stack exchange,提问作者Adrev

