Отправка строго типизированных повторяющихся частичных представлений - PullRequest
1 голос
/ 21 декабря 2011

Я делаю форму в 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 в модели представления.

Так что его имя. Кажется, что происходит то, что частичное представление не наследует начало именования от остальной части формы (и совершенно правильно). Есть ли способ сделать это?

1 Ответ

2 голосов
/ 21 декабря 2011

Вы можете использовать EditorTemplates , либо через Html.BeginCollectionItem помощник, либо просто вызывая Html.EditorFor(Model.EmploymentHistory_Partial_List).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...