Думаю, я знаю, о чем вы просите. Вам нужно передать компании и нескольких сотрудников в представление, чтобы они были строго типизированы. Дайте мне знать, если я ошибаюсь.
Что я делаю, когда мне нужно несколько объектов в представлении, я создаю класс «ViewModel». Обычно я создаю материал модели домена в отдельном проекте, а затем я использую папку моделей в проекте MVC для размещения своих ViewModels.
Так создать класс, как этот
public class SampleViewModel
{
public SampleViewModel() { }
public Company Company { get; set; }
public IEnumerable<Employee> Employees { get; set; }
}
Теперь связать свой вид модели представления образца.
public ViewResult SampleAction(SampleViewModel svm)
{
if (svm == null)
svm = new SampleViewModel() { Company=/*getcompany*/, Employees=/*get ienumerable employees */ };
}
Этот метод хорошо послужил моим целям. Надеюсь, это то, что вы искали.
EDIT: Я прочитал один из ваших комментариев. У Фреда и меня не должно быть достаточного количества ответов, чтобы ответить на другие ответы или что-то (извините, я новичок). Чтобы сгенерировать эти поля «на лету» в представлении, вы, очевидно, привязали бы интерфейс пользователя к полю компании (Model.Company), затем перечислите через IEnumerable (Model.Employees) и создаете любой пользовательский интерфейс для каждого из них. Я относительно новичок в ASP.NET MVC, поэтому я не уверен, как это влияет на привязку модели к POST, но в самом аренде я уверен, что вы могли бы перебирать значения post в своем методе действий и создавать список IEnumerable для привяжите обратно к ViewModel.
Если количество полей в представлении динамическое и вы получаете количество сотрудников X, тогда вам придется перебирать через коллекцию сообщений, чтобы привязать их к вашей модели ViewModel. Оттуда вы можете сделать все, что вам нужно, с компанией и сотрудниками, подключив их к вашей модели домена и т. Д.
Если вы загружаете форму в первый раз, вы, вероятно, не будете иметь никаких сотрудников в так что пользовательский интерфейс не загрузится. Вам нужно будет проверить размер списка, если в нуле вы создадите один набор компонентов пользовательского интерфейса, привязанных к Employee. Тогда у вас, вероятно, была бы кнопка javascript для добавления другого сотрудника, который дублирует этот набор пользовательских интерфейсов столько раз, сколько им нужно.
Вам нужно будет уточнить, это не имеет смысла. –
Хорошо, я переформулировал вопрос. – Fred