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

Razor Pages表单提交后PersonnelNo属性回传为null如何解决

问题根因

两个写法错误导致值回传失败:

  • HiddenFor辅助方法用法错误:该方法第二个参数是HTML特性配置对象,不是字段赋值参数,传入Model.PersonnelNo的写法不会给隐藏域设置value值,表单提交时根本不会携带该字段数据
  • 隐藏域未正确渲染值,导致POST请求中没有PersonnelNo对应的键值对,模型绑定无法给属性赋值,请求处理时拿到的属性值就是null
修复步骤
  1. 调整PageModel的属性绑定配置
    [BindProperty(SupportsGet = true)]仅表示允许GET请求绑定该属性,不会阻止POST绑定,可直接保留或改为默认配置,代码示例:
public class Expenditures: PageModel {
    [BindProperty] 
    public string PersonnelNo {get;set;}
    
    public async Task OnGetAsync() { 
        // 原有业务逻辑
    }

    public async Task<IActionResult> OnPostAsync() {
        // 此处可直接获取回传的PersonnelNo值
        return Page();
    }
}
  1. 修正视图中隐藏域的写法
    删除HiddenFor第二个手动传值的参数,辅助方法会自动读取Model对应属性值渲染到隐藏域的value属性中,正确写法:
<div class="form-control">
    @Html.HiddenFor(model => model.PersonnelNo)
    <input type="submit" value="Save" class="btn btn-primary"/>
</div>

也可以使用标签助手写法,效果完全一致:

<input type="hidden" asp-for="PersonnelNo" />
运行逻辑说明

修复后执行流程:

  • 首次GET加载页面时,PersonnelNo正常赋值,隐藏域自动将属性值渲染到input的value属性中
  • 提交表单时,隐藏域会随表单一同提交PersonnelNo=对应值的键值对,模型绑定自动匹配赋值给PageModel的同名属性,POST方法中可直接复用该值,不会再出现null问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:57:19