ASP.NET MVC 2: Механика зад поръчка / линия за поръчка във формуляр за редактиране

В този въпрос търся връзки/код за обработка на IList<OrderLine> във формуляр за редактиране на MVC 2. По-конкретно се интересувам от изпращане на пълна поръчка до клиента, след което публикуване на редактираната поръчка обратно в обект (за да продължи), използвайки:

Html.EditorFor(m => m.orderlines[ i]) (където orderlines е изброим обект)

Редактирането на поръчка, която има няколко реда за поръчка (две таблици, Order и OrderLine, една към много), очевидно е трудно. Има ли някакви връзки/примери/шаблони, които да съветват как да създадете този формуляр, който редактира обект и свързани обекти в един формуляр (в C# MVC 2)?

IList наистина ме хвърля в цикъл. Трябва ли да го имам там (докато все още имам един формуляр за редактиране на една поръчка)? Как можете да използвате фабриката от страна на сървъра, за да създадете празен OrderLine във формуляра, без да публикувате целия формуляр обратно на сървъра? Надявам се, че няма да третираме отделните редове на поръчката с отделни бутони за запазване, изтривания и т.н. (например те могат да отворят поръчка, да изтрият всички редове, след което да щракнат върху отмяна, което не би трябвало да промени самата поръчка в или хранилището, нито базата данни.

Примерни класове:

public class ViewModel {
    public Order            order       {get;set;}  // Only one order
}

public class Order {
    public int              ID          {get;set;} // Order Identity
    public string           name        {get;set;}
    public IList<OrderLine> orderlines  {get;set;} // Order has multiple lines
}

public class OrderLine {
    public int              orderID     {get;set;} // references Order ID above
    public int              orderLineID {get;set;} // Order Line identity (need?)
    public Product          refProduct  {get;set;} // Product value object
    public int              quantity    {get;set;} // How many we want
    public double           price       {get;set;} // Current sale price
}

person Zachary Scott    schedule 24.05.2010    source източник


Отговори (1)


Трябва да разберете обвързването на модела List‹>/Array/IEnumerable:

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx

person John Farrell    schedule 24.05.2010
comment
Уау, този на Стивънс Андерсън е невероятен. Точно това ми трябваше. - person Zachary Scott; 25.05.2010