Понимание форм в MVC: как заполнить модель из списка <> - PullRequest
2 голосов
/ 11 октября 2010

Заключение в изображениях, можно найти внизу


У меня возникли проблемы с тем, как понять, как формы работают в MVC (так как я разработчик WebForms и действительно хочу начать использовать MVC в одном большом проекте)

Я взял веб-проект MVC2 и добавил к нему простую модель представления

namespace TestForms.Models
{
    public class myFormViewModel
    {
        public myFormViewModel() { this.Options = new List<myList>(); }

        public string Name { get; set; }
        public string Email { get; set; }

        public List<myList> Options { get; set; }
    }

    public class myList
    {
        public myList() { this.Value = this.Name = ""; this.Required = false; }

        public string Name { get; set; }          
        public string Value { get; set; }      
        public string Type { get; set; }
        public bool Required { get; set; }
    }
}

Создал строго типизированное представление , передал новый объект в представление и запустил его.

Когда я нажимаю "Отправить", он не возвращает то, что находится в Options части ... как я могу также связать это ?

мой взгляд

альтернативный текст http://www.balexandre.com/temp/2010-10-11_1357.png

заполняя сгенерированную форму

альтернативный текст http://www.balexandre.com/temp/2010-10-11_1353.png

когда я нажимаю Отправить часть Options не передается в модель! Что я забыл?

альтернативный текст http://www.balexandre.com/temp/2010-10-11_1352.png



Заключение

Изменив цикл просмотра для выделения порядкового номера, теперь у нас есть

<%= Html.TextBox("model.Options[" + i + "].Value", option.Value)%>

model - это имя нашей переменной модели, которую мы передаем в представление Options - это имя свойства типа List а затем мы используем имя свойства

alt text

alt text

1 Ответ

2 голосов
/ 11 октября 2010

Глядя на ваш пользовательский интерфейс, кажется, что вы не поместили в него данные от члена Options.

<% foreach (myList obj in Model.Options) { %>
     // Add the object to your UI. they will be serialized when the form is submitted
<% } %>

Также убедитесь, что вы заключаете данные в элемент формы

EDIT:

Извините!Я не понял, что вы заполняли объект внутри контроллера.Можете ли вы показать код, который у вас есть в представлении?

...