提交强类型重复部分视图

时间:2011-12-20 23:51:55

标签: c# asp.net-mvc-3 viewmodel partial-views

我在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的集合。

所以它的命名。似乎正在发生的是部分视图不是从表单的其余部分继承命名的开始(并且非常正确)。 有没有办法让这种情况发生?

1 个答案:

答案 0 :(得分:2)

您可use EditorTemplates通过Html.BeginCollectionItem帮助者或致电Html.EditorFor(Model.EmploymentHistory_Partial_List)