Html.RadioButtonFor问题

时间:2015-02-04 21:37:08

标签: c# razor asp.net-mvc-5 radio-button

我有以下课程,我试图连接到单选按钮

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>

现在当页面加载时,我选择了说桶,它会回发到控制器,我能够过滤,当页面重新加载时我选择它回发的包但两者的值是相同的,我希望浴缸是假的,因为我选择了包装,反之亦然,有人可以指出我做错了吗?

1 个答案:

答案 0 :(得分:1)

您似乎希望根据“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",并且只允许选择一个。

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