C# 字典绑定MVC
我认为守则如下:C# 字典绑定MVC,c#,asp.net-mvc,C#,Asp.net Mvc,我认为守则如下: @model Dictionary<Project, List<ProjectActualCapacity>> var model2 = Model.ToList(); @for (int i=0;i<Model.Count();i++) { <tr> <td> @Html.DisplayFor(r => model2[i].Key.N
@model Dictionary<Project, List<ProjectActualCapacity>>
var model2 = Model.ToList();
@for (int i=0;i<Model.Count();i++)
{
<tr>
<td>
@Html.DisplayFor(r => model2[i].Key.Name)
</td>
@for (int j = 0; j < model2[i].Value.Count(); j++)
{
<td>
@Html.TextBoxFor(r => model2[i].Value[j].Hours, new { @class = "form-control input-sm" })
@Html.HiddenFor(r => model2[i].Value[j].ID)
</td>
}
@Html.HiddenFor(r => model2[i].Key.ID)
</tr>
}
@model字典
var model2=Model.ToList();
@对于(int i=0;i model2[i].Key.Name)
@对于(int j=0;jmodel2[i].Value[j].Hours,新的{@class=“表单控制输入sm”})
@Html.HiddenFor(r=>model2[i].Value[j].ID)
}
@Html.HiddenFor(r=>model2[i].Key.ID)
}
为什么控制器不在POST请求时绑定模型
public ActionResult ProjectActualCapacityIndex(IDictionary<Project, List<ProjectActualCapacity>> model2)
公共行动结果项目实际能力指数(IDictionary model2)
提前感谢这可能是因为您没有为Model Binder提供足够的信息来完成它的工作 您应该做的是为每个类型创建适当的显示模板和编辑器模板,然后相对地使用
@Html.DisplayFor(…)
和@Html.EditorFor(…)
您发布的视图将变成:
@model Dictionary<Project, List<ProjectActualCapacity>>
@for (int i=0;i<Model.Count();i++)
{
<tr>
<td>
@Html.DisplayFor(r => Model[i].Key)
</td>
@for (int j = 0; j < Model[i].Value.Count(); j++)
{
<td>
@Html.EditorFor(x => Model[i].Value[j])
</td>
}
</tr>
}
@model字典
@对于(int i=0;i模型[i].Key)
@对于(int j=0;jModel[i].Value[j])
}
}
模型绑定有点让人头疼。基本上,类型的每个元素都必须在主体中,并以特定的方式命名,这样框架才能“啊哈,你是说这个类型”并正确填充它。使用Display和EditorTemplates可以更轻松地正确命名元素。现在看看视图生成的HTML中的名称,希望它能更清楚地说明它的作用。这很奇怪,因为唯一的区别是输入元素的类。编辑器使用class=“text box single line”创建输入