MVC добавить ребенка к родителю - PullRequest
0 голосов
/ 01 июля 2010

при условии, что у меня есть дочерний и родительский объект, каждый из которых имеет репозиторий и контроллер.

Обновление: Родитель имеет много дочерних объектов.

родительский контроллер для создания будет выглядеть примерно так. сообщение для создания будет сделано с помощью автоматически сгенерированной формы.

    public ActionResult Create()
    {

        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(Parent parent)
    {
        var parentRepo = new ParentRepository();

        parentRepo.Save(parent);

        return View();
    }

как мне создать ребенка после того, как я создал родителя?

1) одним из решений будет использование URL-адреса, подобного child / create / {idParent}

2) или даже встраивание родительского идентификатора в дочернюю форму создания, чтобы она размещалась вместе с остальными дочерними данными.

Оба кажутся не в духе MVC.

Ответы [ 2 ]

2 голосов
/ 01 июля 2010

Я бы пошел с альтернативой 1)

В вашей версии Post родителя Create parent вы можете вернуть RedirectAction для создания дочернего элемента (и добавить idParent в свой routeValues). Если вам не нравится URL Child / Create / {idParent}, у вас может быть что-то вроде Parent / {idParent} / CreateChild, в зависимости от того, как он соответствует настройке вашего контроллера и какова основная сущность в вашем контексте (Child in первый URL, родитель во втором URL).

0 голосов
/ 01 июля 2010

Если это действительно двухэтапный процесс, то я не думаю, что ваш URL неверен. Это позволит пользователю обновить свой браузер, нажав F5, и он все равно сможет вводить данные после обновления. Также было бы легко отобразить сообщения об ошибках для дочернего объекта.

Но я не уверен, что этот двухэтапный процесс действительно необходим. Если у вас есть возможность построить полный объект за 1 действие, это будет проще. Но я просто догадываюсь. Может быть, это дизайнерское решение.

...