You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 5 中ViewComponent的cshtml文件Model始终为null问题求助

问题根因与解决方法

核心问题原因

你的ViewComponent对应的cshtml文件顶部错误添加了@page指令。@page是Razor Pages的专属指令,添加该指令的cshtml文件会被框架识别为独立可路由的页面,而非ViewComponent的局部视图,此时框架不会将你在InvokeAsync方法中传给View()的参数绑定到Model对象上,最终导致访问Model时返回null。

修复步骤

  • 直接删除cshtml文件第一行的@page指令即可解决问题
    修复后的cshtml代码参考:
@model bool
@if (Model)
{
    <link href="assets/css/style.dark.bundle.css" rel="stylesheet" />
    <link href="assets/plugins/global/plugins.dark.bundle.css" rel="stylesheet" />
}
else
{
    <link href="assets/css/style.bundle.css" rel="stylesheet" />
    <link href="assets/plugins/global/plugins.bundle.css" rel="stylesheet" />
}

额外注意事项

  • ViewComponent的视图不需要@page指令,也不需要手动指定路由,只要放在约定的目录下(比如Pages/Components/{组件名}/Default.cshtml或者Views/Shared/Components/{组件名}/Default.cshtml)即可正常被调用
  • 你报错信息中出现了Model.Value的调用逻辑,如果你声明的Model是不可空值类型bool不需要使用Value属性访问,只有可空值类型bool?才需要调用Value,如果删除@page后仍有报错可以检查@model的声明是否符合预期

内容的提问来源于stack exchange,提问作者Edika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:15:08