ASP.NET Core MVC中创建带模型的Razor页面时ViewData始终为空
ASP.NET Core MVC Admin页面ViewData为空问题排查
技术细节
- VS Enterprise 2022 17.3.2
- .NET 7
- 项目类型:ASP.NET Core Web App MVC
- 空测试项目,所有设置为默认值
项目配置
- Controllers文件夹下存在AdminController,包含通过空控制器模板创建的默认方法
public IActionResult Index() - Views文件夹下有Admin子文件夹,其中的Index Razor页面(基于空模板)代码如下:
@page @model WebApplication1.Views.Admin.IndexModel @{ ViewData["Title"] = "Manage users"; }
- 该页面对应的模型代码:
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; namespace WebApplication1.Views.Admin { public class IndexModel : PageModel { public IActionResult OnGet() { return Page(); } } }
问题现象
启动项目后访问localhost/Admin,出现错误:AspNetCoreGeneratedDocument.Views_Admin_Index.ViewData.get returned null
临时处理方式
需要在AdminController的public IActionResult Index()方法中手动设置ViewData["Title"] = "titlehere";才能正常访问,但这并非预期的正确实现方式,需寻求合理解决方案。
调试结果
- 访问
/Admin/Index时,ViewData为null - 访问
/Index或/Home/Index(默认启动页)时,ViewData是有效对象 - _Layout.cshtml对Admin子文件夹内的页面不生效,但对Home子文件夹的页面正常生效
已尝试的无效操作
- 清理浏览器缓存及站点数据,无效果
- 在Index.cshtml中手动指定
Layout = "布局文件路径",无效,程序未读取该配置
内容的提问来源于stack exchange,提问作者HardcoreMagazine
相关产品推荐
相关产品推荐

