如何正确使用模型绑定来获取 Razor 页面中的单选按钮值

bbb*_*bbb 3 c# asp.net asp.net-core razor-pages

我的剃刀页面上有一组单选按钮,我想在提交表单后在服务器端代码中获取并使用这些单选按钮的选定值。单选按钮的 HTML:

<label><input class="boost_radio" onclick="boostNo(1)" asp-for="Boost_No.Number" type="radio" name="boostno" value=1 checked="checked" disabled="disabled" />1</label>
<label><input class="boost_radio" onclick="boostNo(2)" asp-for="Boost_No.Number" type="radio" name="boostno" value=2 disabled="disabled" />2</label>
<label><input class="boost_radio" onclick="boostNo(3)" asp-for="Boost_No.Number" type="radio" name="boostno" value=3 disabled="disabled" />3</label>
<label><input class="boost_radio" onclick="boostNo(4)" asp-for="Boost_No.Number" type="radio" name="boostno" value=4 disabled="disabled" />4</label>
<span asp-validation-for="Boost_No.Number"></span>
Run Code Online (Sandbox Code Playgroud)

我正在使用模型绑定来获取服务器端的值:

public class BoostNo
{
    [Required(ErrorMessage = "Select Number of Boost Units!")]
    public int Number { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

该类实例化如下:

[BindProperty]
public BoostNo Boost_No { get; set; }
Run Code Online (Sandbox Code Playgroud)

不幸的是,每次我运行代码时,我都会得到一个Boost_No.Number = 0. 我尝试将数据类型更改为字符串,但我只是得到string = null.

我试图在分配给包含单选按钮的表单的处理程序方法中使用模型绑定变量。

如果有人能帮助我,我将非常感激。谢谢。

编辑:

这是使用模型绑定的处理程序方法:

public IActionResult OnPostSubmit()
{
    //save data to sql db
    SaveData();

    //then some other unrelated stuff
}
Run Code Online (Sandbox Code Playgroud)

以及SaveData()方法:

公共无效保存数据()

{
    //stuff

    //now how the radio button values are actually used
    for (int param_i = 1; param_i <= Boost_No.Number; param_i++)
    {
          //...
    }
    //then a paramaterized sql database query
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*ind 5

所有单选输入都设置为disabled,因此提交表单时不会在表单集合中传递任何值。从输入中删除disabled(和) 属性:name

<label><input class="boost_radio" onclick="boostNo(1)" asp-for="Boost_No.Number" type="radio" value=1 checked="checked" />1</label>
<label><input class="boost_radio" onclick="boostNo(2)" asp-for="Boost_No.Number" type="radio"  value=2 />2</label>
<label><input class="boost_radio" onclick="boostNo(3)" asp-for="Boost_No.Number" type="radio"  value=3 />3</label>
<label><input class="boost_radio" onclick="boostNo(4)" asp-for="Boost_No.Number" type="radio"  value=4 />4</label>
Run Code Online (Sandbox Code Playgroud)