Html.RadioButtonFor 的问题

Issue with Html.RadioButtonFor

我有以下内容 class,我正在尝试将其连接到单选按钮

public class ProductFilter
{
    public bool Tubs { get; set; }

    public bool Packs { get; set; }
}

我在视图中使用它

 <div class="row col-lg-12" id="filters">
        <div class="col-lg-4 text-right">
            @Html.RadioButtonFor(model => model.Filter.Tubs, true) Tubs
        </div>
        <div class="col-lg-4"></div>
        <div class="col-lg-4 text-left">
            @Html.RadioButtonFor(model => model.Filter.Packs, true) Packs
        </div>
    </div>

现在,当页面加载时,我 select 说 tubs 它回发到控制器并且我能够过滤,当页面重新加载并且我 select 打包它回发但是两者的值相同,我希望 tubs 是假的,因为我有 selected 包,反之亦然,有人能指出我做错了什么吗?

您似乎想根据值 "Tubs" 或 "Packs" 进行过滤,在这种情况下,您的模型是错误的。您需要一个 属性 来回发这些字符串中的任何一个,例如

public string Filter { get; set; }
public List<string> FilterList { get; set; }

并在控制器中

model.FilterList = new List<string>() { "Tubs", "Packs" };
model.Filter = "Tubs"; // set default

并在视图中

@foreach(var option in Model.FilterList)
{
  <label>
    @Html.DropDownListFor(m => m.Filter, option, new { id = option })
    <span>@option</span>
  </label>
}

这将生成 2 个单选按钮 name="Filter",值为 value="Tubs"value="Packs",并且只允许选择一个。

或者,您可以使用枚举作为过滤器值。