Как закодировать модель представления с вложенными классами

Моя веб-страница/представление будет иметь от 1 до многих записей импорта. В каждой записи импорта будет от 0 до многих из следующего:

  • Заказы
  • Транспортные контейнеры
  • Продукты
  • Счета

Я закодировал свою модель представления следующим образом:

namespace LemansCorpIntranet.Models
{    
    public class ImportWebViewModel
    {
        public string button { get; set; }
        public string status_filter { get; set; }
        public string import_id_filter { get; set; }
        public DateTime date_filter { get; set; }
        public string vendor_filter { get; set; }
        public string port_filter { get; set; }
        public string whse_filter { get; set; }
        public Boolean not_released_filter { get; set; }
        public int release_gap { get; set; }
        public List<import_row> import_rows;
    }

    public class import_row
    {
        public string update_switch { get; set; }
        public string id { get; set; }
        public IEnumerable<SelectListItem> ship_via { get; set; }
        public string broker_number { get; set; }
        public string voyage { get; set; }
        public string vessel { get; set; }
        public decimal shipment_value { get; set; }
        public int cartons { get; set; }
        public decimal weight { get; set; }
        public decimal volume { get; set; }
        public string clearance_port { get; set; }
        public string warehouses_in_shipment { get; set; }
        public string payment_type { get; set; }
        public string insurance { get; set; }
        public DateTime ship_date { get; set; }
        public DateTime close_date { get; set; }
        public DateTime customs_date { get; set; }
        public string customs_entry { get; set; }
        public DateTime pl
<table>
<% if (Model.import_rows != null)
   { %>
<%    for (int row = 0; row < Model.import_rows.Count; row++)
      { %>
        <tr><td>
                <%=Html.HiddenFor(x=>x.import_rows[row].id) %>
                <%=Html.TextBoxFor(x => x.import_rows[row].id)%>
            </td>
        </tr>
<%    } %>
<% } %>
</table>
whse_date { get; set; } public DateTime estimated_arrival_date { get; set; } public DateTime wire_transfer_request_done_date { get; set; } public DateTime approved_broker_bill_date { get; set; } public DateTime product_released_date { get; set; } public List<Invoice> Invoices; public List<PurchaseOrder> PurchasOrders; public List<Product> Products; public List<Container> Containers; } public class Invoice { public string invoice_number { get; set; } } public class PurchaseOrder { public string id { get; set; } public string whse { get; set; } public string vendor_code { get; set; } public string vendor_name { get; set; } } public class Product { public int line_number { get; set; } public string description { get; set; } } public class Container { public int line_number { get; set; } public int size { get; set; } public string id { get; set; } public string seal { get; set; } public DateTime received_date { get; set; } public int cartons { get; set; } } }

Верно ли вышесказанное? Правильно ли вложены классы?

Я могу заставить представление правильно отображать мои данные с сервера, но когда я «отправляю» форму, данные во вложенных классах равны нулю.

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

Моя точка зрения аналогична следующему:

<table>
<% if (Model.import_rows != null)
   { %>
<%    for (int row = 0; row < Model.import_rows.Count; row++)
      { %>
        <tr><td>
                <%=Html.HiddenFor(x=>x.import_rows[row].id) %>
                <%=Html.TextBoxFor(x => x.import_rows[row].id)%>
            </td>
        </tr>
<%    } %>
<% } %>
</table>

Любые предложения будут ценны....

Обновление: я изменил свое представление, чтобы включить элементы «hiddenFor».

«import_rows» больше не равно нулю в контроллере, но счетчик равен «0». Я все еще должен что-то упустить.....

Заранее спасибо.


person hyperstaff    schedule 24.09.2012    source источник
comment
вам нужно сгладить свою модель или создать скрытое поле для каждого свойства в каждом из «вложенных» классов или повторно извлечь данные из базы данных, когда вы вернетесь к методу публикации.   -  person Forty-Two    schedule 25.09.2012


Ответы (1)


Я пытался передать модель представления в RedirectToAction.

Обнаружил, что это так не работает.

Спасибо всем за вашу помощь.

person hyperstaff    schedule 25.09.2012