提交强类型重复的部分视图
本文关键字:视图 强类型 提交 | 更新日期: 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)
。