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

EditForm的Model属性引用对象时@person与person写法的正确用法

Blazor EditForm组件Model属性两种写法差异说明

两种写法运行效果完全等价,都是符合Razor语法规范的正确写法,不存在理解偏差或者写法错误的问题。

语法规则依据

Razor编译器对组件参数的赋值有专门的隐式解析规则:

  • 给Blazor组件的参数(比如EditForm的Model参数)赋值时,只要等号后的值不是明确的静态字符串字面量,编译器会默认将内容识别为C#表达式做解析,这时候表达式开头的@前缀属于可省略的冗余标记。

你提到的两种写法编译后生成的运行时代码完全一致:

<!-- 写法1:带@前缀 -->
<EditForm Model="@person">
</EditForm>

<!-- 写法2:省略@前缀 -->
<EditForm Model="person">
</EditForm>

@code {
    Person person = new Person();
}

必须加@前缀的场景

只有以下场景不能省略@,否则会被识别为静态字符串导致逻辑错误:

  • 给原生HTML元素的属性绑定C#值时,比如<input placeholder="@person.Name" />,如果省略@写成placeholder="person.Name",会直接渲染静态文本"person.Name",不会读取变量值
  • 属性值是静态文本和C#变量的拼接内容时,比如<div class="user-card @user.ActiveClass">,必须加@标记C#代码段的起始位置

写法混用的原因

不同示例出现两种写法纯粹是开发者书写习惯差异:

  • 习惯加@的开发者通常是为了做视觉区分,读代码时可以快速定位到所有动态绑定的C#值,和纯静态字符串属性做区隔
  • 习惯省略@的开发者是遵循组件参数的隐式解析规则,减少不必要的标记简化代码

两种写法不存在优劣之分,团队内统一编码规范即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:48:18