是否可以在没有 onclick 方法的情况下将选中状态分配给剃刀形式的当前复选框的值?

Is it possible assign the checked state to the value of the current checkbox in razor form without onclick method?

我有一个 ASP.Net 核心 MVC Web 应用程序项目。 我想将复选框的选中状态作为值发送到表单提交时模型的相关参数。 我看过很多例子,通过 onchange 方法使用 jquery 到 get/set 复选框的值。

我想知道的是,是否有可能以类似于下面代码的方式将当前复选框的选中状态分配给值。(它不起作用)

<input type="checkbox" id="IsActive" name="DTO.IsActive" checked="@Model.IsActive" value="(this.checked)" 

下面是我发现的最简单的工作示例之一,但如果复选框默认选中且其状态未更改,则 returns 为 false。

<input type="checkbox" id="IsActive" name="DTO.IsActive" checked="@Model.IsActive" onchange="if(this.checked) this.value='true'; else this.value='false';" >

我知道有很多方法可以实现我想要的,但我想要最干净的解决方案。

提前致谢!

编辑:我的代码结构如下:

查看

@model MyModel
<form id="UpdateForm" class="was-validated" method="post" enctype="multipart/form-data" asp-controller="ControllerName" asp-action="Update">
    <div class="modal-body">
        <div class="form-group">
            <input type="text" class="form-control" id="Name" name="DTO.Name" value="@Model.Name" required>
            <input type="checkbox" id="IsActive" name="DTO.IsActive" checked="@Model.IsActive">
        </div>
    </div>
    <div class="modal-footer">
      <button type="submit" class="btn btn-primary" data-save="modal">Update</button>
    </div>
</form>

控制器

public async Task<IActionResult> Update(Guid id, UpdateDto DTO)
{
...
}

解决方案 https://www.learnrazorpages.com/razor-pages/forms/checkboxes

在视图中

<input type="checkbox" " id="IsActive" name="DTO.IsActive" checked="@Model.IsActive" value="true"> 

在 DTO 对象中设置默认值

public bool IsActive { get; set; } = false; 

是的,您可以使用内联剃刀语句@() 它看起来像这样:

<input type="checkbox" id="IsActive" name="DTO.IsActive" @(Model.IsActive ? "checked" : "") />

您也可以使用复选框助手

@Html.CheckBoxFor(model => model.IsActive )