繁体   English   中英

如何在Razor中使用编辑器模板创建单选按钮组

[英]How to create a radiobutton group using an editor template in Razor

我有以下型号

 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)

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

感谢您的所有帮助!

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

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

通常我使用@ Html.HiddenFor(x => x.id)和@ Html.HiddenFor(x => x.name),尝试一下

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM