我正在使用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,它不在乎是否检查。我在做什么错了?
答案 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; }
}