0

属性,要从中填充一组隐藏字段:

public abstract class MyPageView
{        
    [UIHint("List")]
    public IEnumerable<IOption> OptionList { get; set; }
}

执行此操作的命令:

@Html.EditorFor(m => m.OptionList)

定义的“列表”模板的实现:

@model IEnumerable<RoomWanted.FlatShare.Services.ViewModels.Options.IOption>

@for (int i = 0; i < Model.Count(); i++)
{    
    @Html.HiddenFor(x => Model.ToList()[i].Id)
    @Html.HiddenFor(x => Model.ToList()[i].Name)
}

我得到的生成:

<input id="OptionList__0__Id" name="OptionList.[0].Id" type="hidden" value="1" />
<input id="OptionList__0__Name" name="OptionList.[0].Name" type="hidden" value="New York" />

我需要生成什么,以便模型绑定正常工作:

<input id="OptionList_0__Id" name="OptionList[0].Id" type="hidden" value="5"></input>
<input id="OptionList_0__Name" name="OptionList[0].Name" type="hidden" value="New York"></input>

关于如何摆脱那个的任何想法,所以我有OptionList[0].Id而不是OptionList.[0].Id

干杯。

4

1 回答 1

0

使用IList<IOption>orIOption[]代替:

public abstract class MyPageView
{        
    [UIHint("List")]
    public IList<IOption> OptionList { get; set; }
}

然后在你看来:

@model IList<RoomWanted.FlatShare.Services.ViewModels.Options.IOption>

@for (int i = 0; i < Model.Count; i++)
{    
    @Html.HiddenFor(x => x[i].Id)
    @Html.HiddenFor(x => x[i].Name)
}
于 2013-03-17T22:05:01.073 回答