<% using (Html.BeginForm("Action", "Controller", FormMethod.Post))
{%>
<%: Html.AntiForgeryToken()%>
<%: Html.HiddenFor(m=>m.Id) %>
<% for (int i = 0; i < Model.CollectionOfItems.Count; i++)
{%>
<%: Html.HiddenFor(m =>Model.CollectionOfItems.ToList()[i].Id)%>
<%: Html.HiddenFor(m =>Model.CollectionOfItems.ToList()[i].Name)%>
<%: Html.EditorFor( m => Model.CollectionOfItems.ToList()[i].NumbersToState)%>
<%} %>
<input type="submit" value="submit"/>
<%} %>
问题是当我将模型发布到Controller操作时。 &#34; CollectionOfItems&#34;的计数是0.模型状态有效且没有编译错误。
编辑1:我收到了属性模型 - Id。 编辑2:控制器动作
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Action(Model ReceivedModel)
{
try
{
//here i have break point to check value of ReceivedModel
// here i can read the value id of the received model - for ex.: 5
}
catch (Exception)
{
return ""
}
}
编辑3: 模型是来自ADO实体数据模型的实体
public partial class Model
{
public Model()
{
this.CollectionOfItems= new HashSet<Items>();
}
public int Id{ get; set; }
public virtual ICollection<Items> CollectionOfItems{ get; set; }
}
编辑4:
这是foreach循环的结果
<input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." name="[0].Id" type="hidden" value="21">
答案 0 :(得分:3)
.ToList()正在破坏与父对象的绑定。
这是ViewModel概念显示其价值的一个地方(很多)。如果您引入一个,并使用该Model对象进行水合(而不是仅将数据模型用作视图模型),您应该能够超越它。
此方案的示例ViewModel:
public class ViewModel1 // Find a better name ;)
{
public ViewModel1 ()
{
}
public int Id{ get; set; }
public List<Items> Items{ get; set; }
}
答案 1 :(得分:1)
我有类似的问题。问题是每个字段的$domDocument = new DOMDocument();
$domDocument->loadXML( $xml );
$value = $domDocument->getElementsByTagName( "suggestion" );
foreach ( $value as $e ) {
echo $e->getAttribute( "data" )."<br>";
}
属性。每个Name
必须是唯一的,并且与模型正确对应。以下是您发布ICollection所需的内容。
Name
答案 2 :(得分:0)
在使用集合时遇到模型绑定问题,请确保正确设置集合的名称,以使模型绑定起作用。
这是有趣的,它可以帮助您解决问题http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/