将单选按钮绑定到模型

Binding a radiobutton to model

我在 razorpage 上有一个单选按钮,就像这样

<input asp-for="Order.CostCenter" type="radio" id="proj" name="CostCenter" value="proj">
<label>Project</label>
<input asp-for="Order.CostCenter" type="radio" id="dep" name="CostCenter" value="dep">
<label>Department</label>

表单的模型如下所示

 [BindProperty] public OrdPurchase Order { get; set; }

SQL 的模型看起来像这样

 public string CostCenter { get; set; }

并且 SQL 中 CostCenter 的数据类型是 varchar(80)

当我保存表格时,CostCenter 未绑定到 SQL 中的任何值,它保持为 NULL,但其余表格值正确保存

这可能是什么原因?

如果选择“proj”,我想保存值“proj”,如果选择“dep”,我想保存值“dep”

谢谢

托马斯

手动分配输入控件idname时不要使用asp-for

<input type="radio" id="proj" name="CostCenter" value="proj">
<label>Project</label>
<input type="radio" id="dep" name="CostCenter" value="dep">
<label>Department</label>

并使用 BindProperty 对象 属性 和单选按钮名称:

[BindProperty]
public string CostCenter { get; set; }

Asp.net core bind model data with name attribute.You 只需要删除 name="CostCenter",这里是一个演示: .cshtml:

<form method="post">
    <input asp-for="Order.CostCenter" type="radio" id="proj"  value="proj">
    <label>Project</label>
    <input asp-for="Order.CostCenter" type="radio" id="dep" value="dep">
    <label>Department</label>
    <input type="submit" value="submit" />
</form>

.cshtml.cs:

 [BindProperty]
 public OrdPurchase Order { get; set; }
 public IActionResult OnPost()
        {
            return Page();
        }

结果: