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

Razor语法中用C#变量设置HTML按钮disabled属性失效问题排查

问题原因及解决方案

问题根源

你直接通过字符串变量输出disabled属性的方式不符合Razor的HTML属性解析规则。Razor对布尔属性(比如disabled、checked这类只要存在就生效的属性)有专门的处理逻辑,直接输出字符串无法被正确识别为合法属性,导致按钮的禁用状态不生效。

两种正确实现方式

方式一:直接使用Razor条件属性语法(推荐)

这是Razor官方推荐的简洁写法,直接在属性中绑定布尔值,Razor会自动处理属性的渲染:

<div class="form-group row my-4">
    <button class="col-sm-3 btn btn-success" disabled="@EditFormParameter.SendingCompleted" type="button">Send</button>
</div>
  • 当EditFormParameter.SendingCompleted为true时,Razor会渲染出disabled属性;
  • 当值为false时,该属性会被完全忽略,不会出现在最终的HTML中。

方式二:使用@attributes指令(适合多属性动态场景)

如果需要动态控制多个属性,可以把属性存入字典,再通过@attributes指令渲染:

@{
    var btnAttributes = new Dictionary<string, object>();
    if (EditFormParameter.SendingCompleted)
    {
        btnAttributes["disabled"] = "disabled";
    }
}

<div class="form-group row my-4">
    <button class="col-sm-3 btn btn-success" @attributes="btnAttributes" type="button">Send</button>
</div>

这种方式会让Razor正确解析字典中的键值对,将其转换为对应的HTML属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:30:47