2016-09-16 3 views
0

У меня есть класс OrderSummaryViewModelКак связать список с помощью MVC .net?

public class OrderSummaryViewModel 
    { 
     public int Id { get; set; } 
     public string PurchaseOrderNumber { get; set; } 
     public string DeliveryCondition { get; set; } 
     /// <summary> 
     /// Order items 
     /// </summary> 
     public List<OrderItem> Items { get; set; } 
    } 

И второго класс OrderItem

/// <summary> 
    /// Order items 
    /// </summary> 
    public class OrderItem 
    { 
     public int Id { get; set; } 
     public string ItemNumber { get; set; } 
     public string DeliveredQuantity { get; set; } 
     public string fullyDelivered { get; set; } 
    } 

И я связать модель OrderSummaryViewModel в поле ниже .csHTML зрения, чтобы показать порядок с его соответствующими пунктами.

 @model OrderSummaryViewModel 

     <div class="baseForm"> 
      <label>PO Number:</label></td> 
      @Html.DisplayFor(model => model.PurchaseOrderNumber) 
      <label>Delivery Condition:</label> 
      @Html.DisplayFor(model => model.DeliveryCondition) 

      @using (Ajax.BeginForm("RegisterGoodsReceipt",FormMethod.Post, new AjaxOptions { OnSuccess = "OnSuccessRegisterGoodsReceipt", OnFailure = "OnFailureRegisterGoodsReceipt" }, null)) 
      { 
       var items= Model.Items; 
       <table class="dataGrid"> 
        @for (var i = 0; i < items.Count; i++) 
        { 
         var item = items[i]; 
         <tr> 
          <td>@Html.DisplayFor(modelItem => item.Id)</td> 
          <td>@Html.DisplayFor(modelItem => item.ItemNumber)</td> 
          <td> 
           <input class="fullyDelivered" id="@(item.Id)" name="fullyDelivered" type="checkbox" /> 
           <input type="text" id="[email protected](item.Id)" name="DeliveredQuantity" value="@item.DeliveredQuantity"/> 
          </td> 
         </tr> 
        } 
       </table> 
       <button type="submit" class="button">Submit</button> 
      } 
    </div> 

Я хочу представить список пунктов ниже действия, как показано ниже

public ActionResult RegisterGoodsReceipt(OrderSummaryViewModel order) 
{ 
//to do 
} 

Но всегда идти с нулем, я пытался также отправить его в списке элементов, и это дает нуль также.

public ActionResult RegisterGoodsReceipt(List<OrderItem> items) 
{ 
//to do 
} 

поэтому любая помощь по этому вопросу?

+0

'DisplayFor' не' Post' значения. Вы должны поддерживать их в 'скрытых областях или TextBoxFor или EditorFor' с правильной индексацией для списка элементов заказа. – ramiramilu

+1

Правильно создайте свои входы в цикле 'for', используя' @ Html.TextBoxFor (m => m.Items [i] .DeliveredQuantity) 'и т. Д. –

+0

См. Также [Таблица HTML для ADO.NET DataTable] (http: // stackoverflow .com/questions/30094047/html-table-to-ado-net-datatable/30094943 # 30094943) –

ответ

0

Удаляя HTML код и писать его с помощью проблема Бритвы решена и теперь отправляет модель с нужными данными

Смежные вопросы