复选框输入总是返回 false 值

Jon*_*han 1 c# asp.net asp.net-core asp.net-core-2.1

我正在使用 asp.net core 2.1,我有一个简单的视图,其形式如下:

@model Security.WebUi.Pages.AssignClaimToUserModel

<form method="post">
    <div>
        <label>User:  </label>
        <select asp-for="UserId" asp-items="@Model.UserList">
            <option>Please select one</option>
        </select>
    </div>
    <div>
        <label>Role?</label>
        <input type="checkbox" name="IsRole" id="isRole" />
    </div>
    <div>
        <label>Claim Type</label>
        <input type="text" name="ClaimType" id="claimType" />
    </div>
    <div>
        <label>Claim Value</label>
        <input type="text" name="ClaimValue" />
    </div>
    <button type="submit">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

IsRole正如你所看到的,我有一个带有属性的复选框

所以在我的模型中我有一个布尔值:

 public class ClaimToUserdModel
    {
        public string ClaimType { get; set; }
        public string ClaimValue { get; set; }
        public Guid UserId { get; set; }
        public bool IsRole { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

然后在我调用的方法中:

public async Task<IActionResult> OnPost(ClaimToUserdModel model)
            {
              ....
            }
Run Code Online (Sandbox Code Playgroud)

但它总是抛出 false,它不关心检查与否。我究竟做错了什么?

小智 5

我遇到了同样的问题,我通过编写 html 复选框标记来修复它,为其提供与属性名称相同的名称,并且 value = true,如果未选中该复选框,则无需担心,因为它无论如何都不会提交,在您的如果是这样

<input type="checkbox" name="Remember" value="true" checked="@Model.YourmodelPropertyname"/>
Run Code Online (Sandbox Code Playgroud)

您还可以使用 jquery 设置复选框选中的属性值。