как реализовать действие Создать для заказа и Детали заказа в одном представлении создания? - PullRequest
1 голос
/ 16 июня 2011

кто-нибудь придумал простые решения?

вопрос: Учитывая два класса моделей с отношением один-ко-многим, как я могу спроектировать одно создание для них ..

как я могу добавить коллекцию деталей заказа в заказсущность, которая еще не сохранена в базе данных?и какие viewmodels я буду использовать?учитывая, что у меня есть страница заказа (мастер), которая является заполненной формой, тогда у меня должно быть частичное представление, которое собирает детали заказа, и после этого, когда я нажму «сохранить», он создаст «Заказ» плюс свою коллекцию «деталей заказа».спасибо

простое решение кодов будет полезно.спасибо

Вот мои модели:

public class Order
    {
        [Key]
        public int OrderID { get; set; }

        [DisplayFormat(NullDisplayText = "0.00")]
        public decimal TotalAmount { get { return OrderDetails.Sum(od => od.Amount); } }

        public decimal Cash { get; set; }

        [DisplayFormat(NullDisplayText = "0.00")]
        public decimal TotalBV { get { return OrderDetails.Sum(od => od.BV); } }

        public int MemberID { get; set; }

        public virtual Member Member { get; set; }

        public virtual ICollection<OrderDetail> OrderDetails { get; set; }
    }

public class OrderDetail
{
    [Key]
    public int OrderDetailID { get; set; }
    public int OrderID { get; set; }

    public decimal Amount { get { return Product.Price * Quantity; } }

    public decimal BV { get { return Product.BV * Quantity; } }

    public int Quantity { get; set; }
    public virtual Product Product { get; set; }
}

Спасибо.

Ответы [ 2 ]

0 голосов
/ 22 июня 2011

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

Что вы можете сделать, это пронумеровать все входы для каждой строки. Так Product1, 'Amount1` и т. Д. Для каждой новой строки (скажем, есть кнопка «Добавить детали») вы создаете новый набор входов со следующим доступным номером.

Когда вы анализируете Request.Form, вы просто запрашиваете каждую строку, пока не можете найти ее - тогда вы узнаете, что все готово.

НТН

0 голосов
/ 16 июня 2011

Короткий ответ на самом деле «зависит» :) Вопрос, который вы должны сначала задать (и он не имеет ничего общего с MVC), заключается в следующем: когда вы хотите зафиксировать записи пользователя?Я могу придумать несколько вариантов:

  • У вас есть страница «Создать заказ».Пользователь заполняет поля заголовка (похоже, член - единственный), нажимает сохранить, вы сохраняете заказ в базе данных, получаете идентификатор заказа, делаете поля заголовка доступными только для чтения, и пользователь начинает вводить строки.
  • Форма имеет поля заголовка и поля сведений в форме ввода (лично я нахожу это запутанным - но это дело вкуса).Вы получаете все данные (возможно, из коллекции форм) и строите из них объекты Order и Order details (либо в контроллере, либо через собственного провайдера)

Кроме того, вам нужно ответить на тот же вопросо деталях заказа.Вы хотите отправить каждую строку или позволить пользователю создать несколько строк (с помощью кнопки «Добавить строку» и кода JavaScript за ней), а затем отправить набор строк.

Как только вы решите, каким образом выхочешь пойти - легче будет оформить форму.Если у вас возникнут проблемы - возвращайтесь;Я уверен, что вы получите много помощи!

Бог удачи

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