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

ASP.NET MVC中HTML属性是否都需加@符号?三类相关疑问

Razor视图中HTML属性@符号的使用疑问解答

在你的项目里,声明HTML属性时用@class="className"或@id="ID",但@Html.CheckBoxFor的匿名参数里disabled没加@,以下是针对你疑问的具体解答:


1. 为何HTML属性disabled前未添加@符号?

因为disabled不是C#的关键字或上下文关键字,在Razor的匿名对象里直接写属性名即可,编译器会识别它是HTML属性对应的匿名对象键值对。而class、id属于C#的上下文关键字(比如class用来定义类,id在部分语法场景下有特殊含义),如果直接写class="xxx",编译器会把它当成C#关键字处理,导致语法错误,所以必须加@来转义,告诉编译器这是一个普通的属性名。

2. @符号并非在所有场景下都是必需的吗?

没错,@符号的使用分场景:

  • 必须加的情况:当匿名对象的属性名是C#关键字/上下文关键字时(比如class、id、checked、struct等),必须加@转义,避免编译器混淆;另外在Razor视图的HTML模板中输出C#变量或表达式时,也需要用@开头。
  • 不需要加的情况:当属性名不是C#关键字时,像disabled、placeholder、data-*这类,直接写属性名就行,编译器能正确识别为匿名对象的属性,对应生成HTML的属性。

3. HTML属性checked是否需要添加@符号?

需要。因为checked是C#的关键字(用于checked表达式控制整数溢出检查),如果在匿名对象里直接写checked="checked",编译器会把checked当成关键字解析,引发语法错误,所以必须写成@checked="checked"才能让编译器识别这是一个HTML属性对应的匿名对象属性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:45:45