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

ASP.NET MVC如何用特性实现[FromForm]与不同属性名Record的映射?

ASP.NET Core中[FromForm]绑定非规范表单参数的解决方案

在ASP.NET Core的表单绑定场景中,当外部提交的参数名与你的模型属性名不一致时,无需修改自身属性名,只需通过[BindProperty]特性指定对应表单参数名即可。针对record类型的主构造函数参数,需要使用特性目标语法将特性应用到自动生成的属性上。

具体实现代码

假设外部数据源提交的表单参数名为weird_external_field,你的record模型可以这样定义:

public record ExampleModel([property: BindProperty(Name = "weird_external_field")] string MyProperty);

原理说明

  • [BindProperty(Name = "xxx")]:明确告诉MVC表单绑定系统,将名称为xxx的表单参数值映射到当前属性上。
  • [property: ...]:因为record的主构造函数参数会自动生成对应的公共属性,这个语法是把特性直接应用到生成的属性上,而非主构造函数的参数本身。

配置完成后,你的POST端点无需修改,依然可以正常接收并完成映射:

[HttpPost]
public ActionResult MyExample([FromForm] ExampleModel formModel)
{
    // 直接使用formModel.MyProperty即可获取外部提交的对应参数值
    return Ok();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:15:30