Динамические элементы управления в строго типизированном представлении (ASP.NET MVC) - PullRequest
1 голос
/ 17 июня 2009

Скажите, у меня есть следующее:

public class Person{
    public int ID {get; set;}
    public string Name {get; set;}
}

public class Phone{
    public int ID {get; set;}
    public string PhoneNumber {get; set;}
}

public Class AddEditViewModel{
    public Person MyPerson{get; set;}
    public List MyPhones{get; set;}
}

Я хочу создать действие создания / редактирования в моем приложении MVC - страница наследует от

ViewPage<AddEditViewModel>
, и я хочу иметь возможность динамически добавлять поля для конечного пользователя, чтобы добавить «телефон» (где-то между 0 - 5 телефонов). Как бы я передать эти данные в метод Create / Edit в моем контроллере. Я попробовал следующее, но, кажется, ничего не получается, чтобы получить номера телефонов.
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(AddEditViewModel data){} 

с этим я могу вызвать data.MyPerson.Name и получить значение, но data.MyPhones == null

Мой вопрос будет таким: как настроить представление и контроллер, чтобы иметь возможность отправлять одну страницу добавления / редактирования, которая создает объект с одним человеком с несколькими телефонными объектами с указанным кодом выше?

Ответы [ 3 ]

1 голос
/ 17 июня 2009

Если я правильно понимаю ваш вопрос, вы спрашиваете о привязке к списку телефонных номеров. У Фила Хаака есть пост о том, как сделать привязку модели к списку

Надеюсь, это поможет.

0 голосов
/ 10 июля 2016

Если вы знаете, что будет 5 телефонных номеров, то вы можете попробовать этот пример, это добавит 5 текстовых полей и при отправке вы получите значения в вашей модели просмотра

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    public DateTime DatePublished { get; set; }

}

public class BookViewModel
{
    public List<Book> Books { get; set; }

}

View

 @model MVCLearning.Models.BookViewModel

@{
  using (Html.BeginForm("Submit", "Dynamic"))
   {

    if (Model.Count > 0 && Model != null)
    {
        for (int i = 0; i < 5; i++)
        {
            <div id="div_@i">
                @Html.TextBoxFor(m => Model.Books[i].Title)
            </div>
        }
        <input type="submit" value="Submit" />

    }

}
} 
0 голосов
/ 06 марта 2015

Вы можете создать динамическое управление в представлении MVC и связать его с вашей моделью. Например, вы можете использовать коллекцию списков в своем классе модели представления или в классе модели и создать динамическое управление в представлении, оно будет автоматически связываться со свойствами вашей модели.

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