Каков наилучший способ управления созданием и обновлением сложных типов данных в MVC3? - PullRequest
2 голосов
/ 05 ноября 2011

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

В основном у меня есть 3 класса (они отличаются и намного более сложны, чем эти):

public class Person
{
    int ID { get; set;}
    string Name { get; set; }
    virtual IEnumerable<Place> { get; set; }

}

public class Place
{
    int ID { get; set;}
    string Name { get; set; }
    virtual IEnumerable<Thing> { get; set; }
}

public class Thing
{
    int ID { get; set;}
    string Name { get; set; }
    virtual IEnumerable<Place> { get; set; }
    virtual int PersonID { get; set; }
}

Итак, в основном у вас есть Person с, у которых много Place s, которые могут иметь много Thing s, которые также могут появляться в нескольких Places (пытаясь уменьшить необходимость хранить дубликаты Thing s), но только для этого Person

Что такоелучший способ настроить мой ViewModel, чтобы справиться с этим?Должен ли я просто создать все сам по себе, используя Ajax и Json (что я делал), или есть способ обработать этот тип отношений в ViewModel и отправить сообщение обратно на сервер?

В настоящее время я 'я делаю следующее:

Заполните Person форму -> AJAX сохранить на сервере, получите Person ID

Заполните Place форму (включая Person * ID) -> ajax сохранить на сервере, получить Place ID

Заполнить Thing форму (включая Person ID и Place ID s в строке с разделителями

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

Ответы [ 2 ]

2 голосов
/ 05 ноября 2011

Вы говорите «довольно громоздко», но я думаю, что это имеет тенденцию быть более легким, если вы можете построить граф объектов в форме в реальном времени, используя AJAX / JSON, возможно, на основе RESTful API, как вы уже описали.

Альтернативой является использование скрипта (jQuery, JSMVC, Knockout) для создания формы и POST всей присоски одновременно. Я должен был сделать это в некоторых ситуациях, когда ни один из данных не должен быть сохранен, пока весь граф не будет зафиксирован. Хитрость в том, чтобы понять ModelBinder и то, как он строит / обновляет этот график для вас.

Если это то, о чем вы спрашивали, я могу подробнее остановиться на ключевых моментах того, как ModelBinder работает с графами и коллекциями сложных объектов.

2 голосов
/ 05 ноября 2011

Я ответил на аналогичный вопрос о том, как справиться с этим с помощью интерфейсов и частичных представлений.

Как создать модель представления Asp.Net MVC 3

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