2016-06-30 5 views
0

Я пытаюсь передать данные таблицы из представления в контроллер с помощью java-скрипта, но он не работает. Я передаю свои данные таблицы моему классу модели с помощью java-скрипта.Передача данных таблицы из представления в контроллер с помощью javascript

В моем классе модели есть массив объектов моего общего класса, в которых я заполняю свои данные.

Мой общий класс, как это:

public class BomItemsDTO : IBomItems 
{ 
    public int stockitemid { get; set; } 
    public string itemname { get; set; } 
    public int quantity { get; set; } 
    public string description { get; set; } 
    public string approvedsupplier { get; set; } 
    public int priceperunit { get; set; } 
    public int totalprice { get; set; } 
} 

Моя модель класса выглядит так:

public class BiddingSecondStepModel 
{ 
    public BomItemsDTO[] BomItems { get; set; } 

} 

Мой Javascript код заключается в следующем:

<script type="text/javascript"> 
    $("#btnsendtoadvancepurchase").on('click', function() { 
     var BomItems = []; 
     $('#tblBom tr').each(function (row, tr) { 
       BomItems.push({ 
        itemcode: $(tr).find('td:eq(0)').text().trim(), 
        desc: $(tr).find('td:eq(1)').text(), 
        quant: $(tr).find('td:eq(2)').text(), 
        supplier: $(tr).find('td:eq(3)').text(), 
       }); 
     }); 
      var model = { 
       BomItems: BomItems 
      }; 


      debugger; 
      $.ajax({ 
       url:'@Url.Action("AdvancePurchase", "CreateBid")', 
       type: "POST", 
       contentType: 'application/json; charset=utf-8', 
       data: MODEL, 
       dataType:'json', 
       success: function (data) { 
        alert('Document Saved.'); 
       } 
      }); 
     }); 

</script> 

Мой HTML таблицы как который производится динамически:

<table class="TableID2" id="tblBom"> 
            <thead> 
             <tr> 
              <th>Item Code</th> 
              <th>Description</th> 
              <th>Quantity</th> 
              <th>Approved Supplied</th> 
              <th></th> 
             </tr> 
            <tr><td> 
       TD6915PLBOXSTRG00 
      </td><td>456 n6</td><td>789456</td><td>aa</td><td><img src="../Content/Images/deleterow.png" class="btnDelete"></td></tr><tr><td> 
       SG0242108JAD1HG10 
      </td><td>125 v4</td><td>456123</td><td>aa</td><td><img src="../Content/Images/deleterow.png" class="btnDelete"></td></tr></thead> 

           </table> 

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

[HttpPost] 
    public ActionResult AdvancePurchase(BiddingSecondStepModel data) 
    { 

    } 

я не написал код для того, что я должен делать с моими данными, когда действие контроллера принимает данные. Моя основная проблема заключается в том, как отправить данные моей таблицы из представления в мое действие с контроллером.

Пожалуйста, помогите. Заранее спасибо

+1

Использование 'data: JSON.stringify ({data: model}),' Вам также необходимо изменить все имена свойств javascript, чтобы они соответствовали именам свойств модели - например. 'stockitemid' (не' itemcode'), 'description' (не' desc') и т. д. –

+0

@StephenMuecke Большое спасибо sir ... я был поражен этой проблемой за последние 2 часа .. но теперь это работает ... –

+0

Я также подозреваю, что вы хотите поместить 'id =" tblBom "' в элемент '', чтобы вы также не отправляли строку заголовка таблицы (но html в вашем вопросе недействителен - не закрывается' '- так не уверен, что это на самом деле) –

ответ

0

Возможно, ваша модель в js не создавалась правильно! вы можете получить свою модель с формой сериализации, а не получать все поля, подобные этому. Для этого сначала определите идентификатор для вашей формы, а в скрипте получите всю форму по id, затем вы можете сериализовать все поля модели, которые находятся в вашей форме, например :

var model=$("#Myform").serialize(); 

теперь вы можете связать свою модель после URL и отправить его в ваш контроллер, как:

$.ajax({ 
     url:'@Url.Action("AdvancePurchase","CreateBid")?'+model, 
     type: "POST", 
     success: function (data) { 
     alert('Document Saved.'); 
       } 
       }); 

он будет работать.

+0

OP не имеет элементов управления формой (только таблица с текстом). 'var model = $ (" # Myform "). serialize();' ничего не вернет! –

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