【问题标题】:How to create a radiobutton group using an editor template in Razor如何在 Razor 中使用编辑器模板创建单选按钮组
【发布时间】:2015-04-14 07:37:30
【问题描述】:

我有以下型号

 public class FilterSetting
{
    public FilterType Type { get; set; }
    public ShowOption Option { get; set; }
    public bool IsMultiple { get; set; }
    public List<int> SelectedValues { get; set; }
    public List<SelectListItem> Values { get; set; }
    public int RowCount { get; set; }
}
public enum ShowOption
{
    Common,
    Also,
    All
}

我想为 ShowOption 枚举创建一个单选按钮组,但我想使用编辑器模板显示该组,因为我有另一个模型可以创建 FilterSetting 列表,它将显示大约 7 个 FilterSettings 每个必须具有ShowOption 属性的一组 3 个单选按钮。

问题是当 razor 从编辑器模板渲染单选按钮时,它为每个单选按钮使用相同的名称 (name="filter.Option"),我不知道如何设置值。

这是我的编辑器模板

@model Models.FilterSetting


@Html.RadioButtonFor(f => f.Option, "Common", new { id = ""+ Model.Type })
@Html.Label(""+Model.Type, "Show only common assets")
<br />
@Html.RadioButtonFor(f => f.Option, "Also", new { id = "" + Model.Type })
@Html.Label(""+Model.Type, "Also show assets matching the values selected below")
<br />
@Html.RadioButtonFor(f => f.Option, "All", new { id = "" + Model.Type })
@Html.Label(""+Model.Type, "Show all assets")
<br />


@if (Model.IsMultiple)
{
    @Html.ListBoxFor(f => f.SelectedValues, Model.Values)
}
else
{ 
    @Html.DropDownListFor(f => f.SelectedValues, Model.Values, new { size = "4" })
}

我尝试在 htmlAttributes 对象上传递名称,但它不起作用。

编辑: 显然问题是我打电话给编辑的方式。 我是这样称呼的

@foreach (var filter in Model.FilterSettings)
{
      ....
      @Html.EditorFor(f => filter)
}

当我这样称呼它时

@Html.EditorFor(f => f.filterSettings)

单选按钮正常工作。当我为每个人做这些时会发生什么?

感谢大家的帮助!

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-3 razor mvc-editor-templates


    【解决方案1】:

    当您为集合调用Editor/EditorFor 时,Razor 将跟踪生成的名称和 ID,因此您将获得生成的名称,如 ex。 Addresses[0].Line1, Addresses[1].Line1...

    但是当您自己迭代集合并为每个模型剃须刀调用编辑器时,不要跟踪名称和 ID(应该如何?这不会更复杂吗?)它认为将在页面中呈现一个新控件。

    【讨论】:

      【解决方案2】:

      通常我使用@Html.HiddenFor(x=>x.id) 和@Html.HiddenFor(x=>x.name),试试这个

      【讨论】:

        猜你喜欢
        • 2013-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多