2013-07-27 1 views
0

Я новичок в ASP.Net MVC. Я пытаюсь изучить MVC3, разработав онлайн-систему образования. Я столкнулся с проблемой передачи значения текстовых полей и выпадающего списка, которые создаются javascript из представления в контроллер с использованием модели представления. У меня есть сценарий, в котором ученик добавляет свой список текущих квалификаций. enter image description hereПередача Значения списка элементов управления, созданных javascript из представления в контроллер в asp.net mvc3

В приведенном выше изображении я попытался объяснить свою проблему.

Сначала открывается только один ряд образования. Когда ученик нажимает кнопку «Добавить», под ним будет добавлена ​​новая строка и так далее.

Я создал ViewModel StudentEducation ViewModel. Я также изучил несколько вопросов о переполнении стека, подобных этому. Во всём я обнаружил, что создается общее свойство списка и создает элементы управления, зацикливая его. Но моя проблема в том, что в списке нет объекта в списке i.e. Я не могу установить число квалификационных учеников.

Так что, пожалуйста, помогите мне в этом отношении.

ответ

0

Допустим, у вас есть ViewModel с именем StudentEducation В вашем почтовом действий, вам нужно List<StudentEducation> как

[HttpPost] 
public Action MyAction(List<StudentEducation> students) 
{ 
... 
} 

Вы также должны ПОЛУЧИТЬ меры, чтобы принести вид. Сначала он будет пустым и не будет содержать никаких записей.

public Action MyAction() 
{ 
    //here, initialize your 
    //List<StudentEducation> vm = new List<StudentEducation>(); 
    // and send it to view like 
    return View(vm); 
} 

Вам также нужен строго типизированный вид. В вашем представлении вам необходимо повторить свою модель и создать элементы списка, такие как

@model IEnummerable<StudentEducation> 

for(var i=0;i<@Model.count;i++) 
{ 
    @Html.TextBoxFor(o=>o[i].PropertyName) 
} 

Вот интересная вещь. Список будет связывать должным образом, если ваш генерируется HTML разметка как

<input type="text" value="something" name="[1].PropertyName" /> 

здесь name="[1].PropertyName" самая важная вещь. Если вы создадите свой HTML-код списка с именами в этом шаблоне, вы получите заполненный List<Studenteducatio> при отправке формы

+0

Спасибо. Я успешно реализовал ваш код. –

0

Вам необходимо привязать модель к списку. Каждая новая строка, которую вы добавляете в таблицу через JavaScript, должна иметь правильные идентификаторы Id, установленные для входов html.

Я столкнулся с той же проблемой некоторое время, когда ушел и this статья Фила Хаака помогла мне решить проблему.

Я закончил создание новой строки (хотя в моем случае это была вся форма, которую можно было ввести несколько раз), чтобы использовать, когда пользователь нажал кнопку «Добавить». Я также реализовал вспомогательную функцию JavaScript, которая рассчитала правильный порядковый номер строки, которую нужно вставить. Мне не нужно ничего менять в контроллерах, только что сработало.

+0

Спасибо. Прочитав статью Фила Хакка, я успешно решил свою проблему. Я также попытался создать частичный вид. Но не повезло. У меня есть модель просмотра студента, в которой есть свойство StudentEducationList общего типа. Я зацикливаю его на виду и вызываю html.partial с частичным именем представления и объектной моделью с индексом. Он создал необходимые элементы управления, но по мере того, как я отправляю просмотр с помощью модели представления ученика, он не передает значения модели vieweducation viewedodation, из которой есть свойство в модели представления студента типа списка. Не могли бы вы прислать мне код реализации частичного представления. –

Смежные вопросы