【问题标题】:Binding a radiobutton to model将单选按钮绑定到模型
【发布时间】:2021-07-19 23:14:51
【问题描述】:

我在 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”

谢谢

托马斯

【问题讨论】:

    标签: c# asp.net-core binding radio-button razor-pages


    【解决方案1】:

    Asp.net核心绑定模型数据与name属性。你只需要去掉name="CostCenter",这里有一个demo: .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();
            }
    

    结果:

    【讨论】:

    • 谢谢,成功了!你用什么程序制作gif?
    • 你可以在浏览器上搜索,会有很多免费程序。
    【解决方案2】:

    手动分配输入控件的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; }
    

    【讨论】:

      猜你喜欢
      • 2013-06-29
      • 2020-01-19
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多