提交强类型重复的部分视图

本文关键字:视图 强类型 提交 | 更新日期: 2023-09-27 18:18:31

我在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:为什么这些值没有在post上提交给模型?

(我认为这与html文档中的mvc命名约定有关)


进步!

通过编辑其中一个字段的html(使ID和NAME等于EmploymentHistory_Partial_List[0]. empist)。LJCOMP而不是phist .LJCOMP),在调试时提交。它工作。它得到了视图模型中的EmploymentHistory_Partial_List集合。

这是命名。似乎发生的事情是,部分视图没有从表单的其余部分继承命名的开始(这是非常正确的)。有办法做到这一点吗?

提交强类型重复的部分视图

您可以使用EditorTemplates,通过Html.BeginCollectionItem helper或仅仅通过调用Html.EditorFor(Model.EmploymentHistory_Partial_List)