Я делаю форму в 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's.
Это показывает данные правильно, когда я использую этот код в моем представлении истории занятости:
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: Почему значения не отправляются в модель по почте?
(я предполагаю, что это как-то связано с соглашениями об именах mvc в html-документе)
UPDATE
ПРОГРЕСС!
, отредактировав html одного из полей (чтобы ID и ИМЯ равнялись EmploymentHistory_Partial_List [0] .empHist.LJCOMP вместо empHist.LJCOMP), прежде чем я отправлю их при отладке. ЭТО СРАБОТАЛО. Он попал в набор EmploymentHistory_Partial_List в модели представления.
Так что его имя. Кажется, что происходит то, что частичное представление не наследует начало именования от остальной части формы (и совершенно правильно). Есть ли способ сделать это?