复选框输入始终返回假值

时间:2018-11-15 22:55:14

标签: 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>

如您所见,我有一个带有IsRole属性的复选框

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

 public class ClaimToUserdModel
    {
        public string ClaimType { get; set; }
        public string ClaimValue { get; set; }
        public Guid UserId { get; set; }
        public bool IsRole { get; set; }
    }

然后在我称之为的方法中

public async Task<IActionResult> OnPost(ClaimToUserdModel model)
            {
              ....
            }

但是它总是抛出false,它不在乎是否检查。我在做什么错了?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我通过编写html checkbox标签解决了这个问题,并给它起了与属性名称相同的名称,并且value = true,如果未选中该复选框则无需担心,因为无论如何它都不会提交,您的情况就是这样

<input type="checkbox" name="Remember" value="true" checked="@Model.YourmodelPropertyname"/>

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

答案 1 :(得分:0)

您可以使用try:

<input type="checkbox" name="IsRole" id="isRole" value="true" />

似乎您正在使用ASP.NET Core Razor Page,也可以参考以下示例:

@page
@model razorpages.Pages.AssignClaimToUserModel
@{
    ViewData["Title"] = "AssignClaimToUser";
}

<form method="post">

<div>
    <label>Role?</label>      
    <input asp-for="ClaimToUserdModel.IsRole" name="IsRole">
</div>

<button type="submit">Submit</button>

后面的代码:

public class AssignClaimToUserModel : PageModel
{
    public ClaimToUserdModel ClaimToUserdModel;
    public void OnGet()
    {

    }

    public async Task<IActionResult> OnPost(ClaimToUserdModel model)
    {
        return null;
    }
}

public class ClaimToUserdModel
{
    public string ClaimType { get; set; }
    public string ClaimValue { get; set; }
    public Guid UserId { get; set; }
    public bool IsRole { get; set; }
}