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"
...