Asp.net mvc 3 post方法中的空枚举

Asp.net mvc 3 post方法中的空枚举,asp.net-mvc-3,post,razor,get,actionmethod,Asp.net Mvc 3,Post,Razor,Get,Actionmethod,我有这个看法 @model IEnumerable<ViewModelRound2> ... <snip> ... @{ using (Html.BeginForm(new { round1Ring3Bids = Model })) { if (Model != null && Model.Count() > 0) { ... <snip> ...

我有这个看法

@model IEnumerable<ViewModelRound2>

... <snip> ...

@{
    using (Html.BeginForm(new { round1Ring3Bids = Model }))
    {
        if (Model != null && Model.Count() > 0)
        {
                ... <snip> ...

                @for (var x = 0; x < Model.Count(); x++)
                {
                    ViewModelRound2 viewModelRound2 = Model.ElementAt(x);
                    Bid bid = viewModelRound2.Bid;

                    string userName = @bid.User.Invitation.Where(i => i.AuctionId == bid.Lot.Lot_Auction_ID).First().User.User_Username;

                    <tr>
                        <td>
                            @userName
                        </td>
                        <td>
                            @bid.Bid_Value
                        </td>
                        <td>
                            @Html.EditorFor(c => c.ElementAt(x).SelectedForRound2) 
                        </td>
                    </tr>
                }

            </table>

            <div class="buttonwrapper2">
                <input type="submit" value="Select"/>              
            </div>
        }
    }
}
@model IEnumerable
...  ...
@{
使用(Html.BeginForm(new{round1Ring3Bids=Model}))
{
if(Model!=null&&Model.Count()>0)
{
...  ...
@对于(var x=0;xi.AuctionId==bid.Lot.Lot\u Auction\u ID).First().User.User\u用户名;
@用户名
@出价
@EditorFor(c=>c.ElementAt(x).SelectedForRound2)
}
}
}
}
我有一个post方法,当点击submit按钮时,它将转到该方法

[HttpPost]
        public ActionResult Round2Manager(IEnumerable<ViewModelRound2> round1Ring3Bids)
[HttpPost]
公共行动结果第二轮经理(IEnumerable Round1招标)
问题是枚举总是空的。为什么会这样

问题是枚举总是空的。为什么会这样

因为您不遵守默认模型绑定器希望绑定集合的规则

以下是:

@Html.EditorFor(c => c.ElementAt(x).SelectedForRound2) 
为输入字段生成完全错误的名称

我建议您使用编辑器模板来避免此类问题:

@model IEnumerable<ViewModelRound2>

@using (Html.BeginForm())
{
    if (Model != null && Model.Count() > 0)
    {
        <table>
            @Html.EditorForModel()
        </table>
        <div class="buttonwrapper2">
            <input type="submit" value="Select"/>              
        </div>
    }
}
现在,您将注意到文本输入字段的名称是如何正确的:

name="[0].SelectedForRound2"
name="[1].SelectedForRound2"
name="[2].SelectedForRound2"
...
将其与初始值进行比较

name="[0].SelectedForRound2"
name="[1].SelectedForRound2"
name="[2].SelectedForRound2"
...