c# – ASP.NET MVC POST中的Modelbinding IEnumerable?
发布时间:2020-12-15 06:49:40 所属栏目:百科 来源:网络整理
导读:将模型绑定IEnumerable类型与MVC POST有任何问题吗? 我的模型中的一些属性没有被绑定到一个动作的帖子.似乎模型上的属性就像字符串一样,但我的IEnumerable是什么没有绑定. 以下是我的代码片段: %: Html.TextBoxFor(m = m.ResponseInfo.SubsetInfo.Test) %
将模型绑定IEnumerable类型与MVC POST有任何问题吗?
我的模型中的一些属性没有被绑定到一个动作的帖子.似乎模型上的属性就像字符串一样,但我的IEnumerable是什么没有绑定. 以下是我的代码片段: <%: Html.TextBoxFor(m => m.ResponseInfo.SubsetInfo.Test) %> <% for (int i = 0; i < Model.ResponseInfo.SubsetInfo.BandAvailabilities.Count(); i++) {%> <%: Html.TextBoxFor(m => m.ResponseInfo.SubsetInfo.BandAvailabilities.ToArray()[i].BandName) %> <% } %> 这里是模型中的这些属性: public IEnumerable<BandAvailabilityInfo> BandAvailabilities { get; set; } public string Test { get; set; } 视图工作正常,并输出文本框列表中的预期值.但是被触发的帖子Action只能将Test字符串识别为属性.模型状态也不包含我的IEnumerable数据. 解决方法
模型绑定取决于HTML的生成方式.对于特定场景绑定正确html应该看起来像
<input type="text" name = "ResponseInfo.SubsetInfo.BandAvailabilities[0].BandName"/> <input type="text" name = "ResponseInfo.SubsetInfo.BandAvailabilities[1].BandName"/> <input type="text" name = "ResponseInfo.SubsetInfo.BandAvailabilities[2].BandName"/> . . <input type="text" name = "ResponseInfo.SubsetInfo.BandAvailabilities[n].BandName"/> 我没有尝试过,但我几乎可以肯定,调用ToArray方法循环是保持系统为嵌套输入生成正确的名称.有几件事情你可以做,以补救这一点 public IEnumerable<BandAvailabilityInfo> BandAvailabilities { get; set; } 至 public IList<BandAvailabilityInfo> BandAvailabilities { get; set; } //or Array 所以您不必在循环中调用ToArray方法,并为输入生成适当的名称. <%: Html.EditorFor(m => m.ResponseInfo.SubsetInfo.BandAvailabilities%> 休息将由框架本身处理 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |