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

ASP.NET MVC中无法通过name属性获取Checkbox值的问题求助

ASP.NET MVC中无法通过name属性获取Checkbox值的问题求助

看起来你遇到了ASP.NET MVC里Checkbox值绑定的典型问题,我来帮你梳理下问题根源并给出解决办法。

问题分析

你的代码里有两个核心问题导致无法正确获取bSendEmail的值:

  1. 禁用状态下的Hidden字段未设置Value
    当g_EnableEmail为No时,你把Checkbox设为disabled,同时加了一个同名的hidden字段,但这个hidden字段没有指定value属性。浏览器不会提交禁用的表单元素,而空值的hidden字段会被提交为空白字符串,ASP.NET MVC的模型绑定会把空白字符串解析为false,这就导致禁用状态下无论怎样都会拿到false。

  2. Checkbox未明确设置Value属性(启用状态的潜在隐患)
    默认HTML Checkbox的value是"on",虽然ASP.NET MVC通常能把"on"映射为bool类型的true,但某些场景下(比如配置差异)可能会出现映射失效的情况,明确设置value="true"能让绑定逻辑更可靠。

解决方案

修改你的.cshtml代码如下,针对性解决上述问题:

<form method="post" asp-action="ItemIndex">
    <div class="row">
        <div class="col-xl-12 text-center mt-3">
            @if (g_EnableEmail == Constants.GeneralIndicator.Yes)
            {
                <!-- 启用状态:明确设置value为true,确保勾选时提交正确值 -->
                <input type="checkbox" id="chkSendMail" name="bSendEmail" class="my-checkbox" value="true" />
            }
            else
            {
                <!-- 禁用状态:用hidden字段传递预设值,这里默认设为false,若需要默认勾选可改为true -->
                <input type="checkbox" id="chkSendMail" name="bSendEmail" class="my-checkbox" disabled checked="@false" />
                <input type="hidden" name="bSendEmail" value="false" />
            }
            <label for="chkSendMail" class="head-label2">Send Email Notification</label>
        </div>
    </div>

    <div class="row">
        <div class="col-xl-12 text-center mt-10">
            <button type="submit" asp-route-bConfirm="@false" asp-action="ItemIndex" class="genric-btn info circle"><i class="fa fa-check"></i> Save</button>
            <button type="submit" asp-route-bConfirm="@true" asp-action="ItemIndex" class="genric-btn green circle"><i class="fa fa-check"></i> Finalize</button>
            <a asp-controller="CreditNotes" asp-action="CreateEdit" asp-route-id="@Model.CreditNoteId" class="genric-btn danger circle "><i class="fa fa-times "></i> Cancel</a>
        </div>
    </div>
</form>

额外说明

  • 启用状态下:勾选Checkbox会提交bSendEmail=true,Action参数会拿到true;不勾选则浏览器不会提交该字段,ASP.NET MVC会把bool类型的参数默认设为false,符合你的需求。
  • 禁用状态下:通过hidden字段传递预设的固定值,确保Action能拿到符合业务逻辑的结果。

这样修改后,你应该就能正确获取到bSendEmail的参数值了。

备注:内容来源于stack exchange,提问作者Godson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 09:28:11