ASP.NET MVC: модель связывания сложного типа - PullRequest
3 голосов
/ 22 июня 2011

У меня проблемы с привязкой к объекту, а привязка к списку объектов работает. Использование Mvc3.1 с обновлением инструментов.

При связывании с классом Form функция HttpPost получает правильную модель. При привязке к FormViewModel функция HttpPost получает пустую модель.

Существуют ли какие-либо ограничения при связывании моделей, содержащих другие модели?

public class FormViewModel
{
    public Form Form { get; set; }
}

public class Form
{
    public List<Section> Sections { get; set; }
}

public class Section
{
    public List<Question> Questions { get; set; }
}

public class Question
{
    public int Id { get; set; }
    public string Description { get; set; }
}

1 Ответ

2 голосов
/ 23 июня 2011

Атрибут name ваших входных элементов - это то, что связыватель использует в качестве контекста для выполнения своей магии.Я предполагаю, что ваше представление содержит что-то вроде этого:

@model Form
@Html.EditorFor(m => m.Sections)

И ваш метод публикации выглядит следующим образом:

[HttpPost]
public ActionResult Function(FormViewModel formViewModel)
{
    // ...
}

Если вы измените свое представление на:

@model FormViewModel
@Html.EditorFor(m => m.Form.Sections)

И ваше действие get для возврата экземпляра FormViewModel, вероятно, будет работать нормально.Помощники будут использовать тело лямбда-выражения для создания имени элемента ввода.В этом случае он создаст что-то вроде Form.Sections[0].Field.Затем связыватель модели может выбрать Form.Sections [] и правильно инициализировать FormViewModel.

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