我在ASP.Net MVC 3 C#中制作表格。
表单的特定页面包含用户的工作经历。
用户可以拥有多个就业历史记录。所以视图模型包含一个列表。
现在这很容易(并且有效):
int i = 0;
foreach (FrgCandidatePortal_2.Models.tblCandidateEmploymentHistory item in Model.empHistList)
{
<div>
<label>
Employment History @Html.Encode(i + 1)</label></h4>
<label>
Company Name</label>
<div>
@Html.EditorFor(c => c.empHistList[i].LJCOMP)
@Html.ValidationMessageFor(c => c.empHistList[i].LJCOMP)
</div>
...
</div>
i++;
}
但是我希望能够使用按钮和ajax添加一个空的 所以我认为“生病使其成为局部观点” 问题1:部分视图是否正确处理需要添加删除和保存功能的重复表单元素?
现在我已将其设为局部视图,这是我的页面视图模型:
public class EmploymentHistoryViewModel : ViewModels
{
private List<EmploymentHistory_Partial> _EmploymentHistory_Partial_List;
public List<EmploymentHistory_Partial> EmploymentHistory_Partial_List
{
get
{
if (_EmploymentHistory_Partial_List.Count == 0)
{
int i = 0;
foreach (tblCandidateEmploymentHistory item in dataModel.candidateModel.tblEmpHistList)
{
_EmploymentHistory_Partial_List.Add(new EmploymentHistory_Partial(i, item));
i++;
}
return _EmploymentHistory_Partial_List;
}
else
{
return _EmploymentHistory_Partial_List;
}
}
set {
//foreach emphist partial fill emp hist
_EmploymentHistory_Partial_List.Clear();
dataModel.candidateModel.tblEmpHistList = value.Select(c=>c.empHist).ToList();
}
基本上我的视图模型是_EmploymentHistory_Partial的列表 当我在我的就业历史视图中使用此代码时,它会正确显示数据:
int i = 0;
foreach (FrgCandidatePortal_2.Models.EmploymentHistory_Partial item in Model.EmploymentHistory_Partial_List)
{
Html.RenderPartial("_EmploymentHistory_Partial",new FrgCandidatePortal_2.Models.EmploymentHistory_Partial(i,Model.EmploymentHistory_Partial_List[i].empHist));
}
但它没有提交 问题2:为什么值不在帖子上提交给模型?
(我假设它与html文档中的mvc命名约定有关)
更新
进步!
通过编辑其中一个字段的html(以便ID和NAME等于EmploymentHistory_Partial_List [0] .empHist.LJCOMP而不是empHist.LJCOMP),然后我在调试时提交。有效。它在视图模型中得到了EmploymentHistory_Partial_List的集合。
所以它的命名。似乎正在发生的是部分视图不是从表单的其余部分继承命名的开始(并且非常正确)。 有没有办法让这种情况发生?
答案 0 :(得分:2)
您可use EditorTemplates通过Html.BeginCollectionItem
帮助者或致电Html.EditorFor(Model.EmploymentHistory_Partial_List)
。