2013-05-03 1 views
3

У меня есть модуль dnn, который я создал, который не имеет проблем с извлечением данных с сервера с помощью WebAPI. Однако, когда я пытаюсь выполнить обновление, я продолжаю получать ошибки независимо от того, что я пытаюсь сделать. Просмотр в Firebug, я могу данные быть вывешенным:Как выполнить обновление/удаление DatNetNuke WebAPI?

(http://www.virtual-essentials.com/personal/firebug1.png)

Но, когда я отладки, я не вижу ничего, кроме (null.setnull) значения по умолчанию (BOOL = ложь, INT = 0, строка = пустое).

Тогда, конечно, ответ не хорошо, и результаты в этом: (http://www.virtual-essentials.com/personal/firebug2.png)

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

Здесь Ajax вызов: // U // операция - обновление self.updateTestimonial = функция (objItem) { метода переменных = "UpdateTestimonial"; self.UpdatePublishStatus (objItem);

$.ajax({ 
     type: "POST", 
     contentType: "application/json", 
     url: sf.getServiceRoot('VirtualEssentials/Testimonials') + "TestimonialWeb/" + method, 
     beforeSend: sf.setModuleHeaders, 
     data: ko.toJSON({ item: new TestimonialInfoDTO(objItem.TestimonialID(), objItem.IsPublished())}), 
     success: function (data) { 
      self.userAlertText(objItem.Testimonial() + ' changes have been saved'); 
      //self.getTestimonials(); //get the new data after updates 
     }, 
     error: function (xhr, status, error) { 
      self.userAlertText('OOPS! Error updating ' + objItem.Testimonial + '<br />' + (error)); 
      //put the status back 
      self.UpdatePublishStatus(objItem); 

     } 
    }); 
}; 

Вот вызов WebAPI Контроллер:

[HttpPost] 
    [DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Edit)] 
    public System.Net.Http.HttpResponseMessage UpdateTestimonial(TestimonialInfoDTO item) 
    { 
     try 
     { 
      Controller.TestimonialController objController = new Controller.TestimonialController(); 
      objController.PublishTestimonial(item.TestimonialID, item.IsPublished); 
     } 
     catch (HttpResponseException ex) 
     { 
      return ex.Response; 
     } 

    } 

Любая помощь на этом искренне признателен !!

ответ

3

Это никогда не сработает, если вы найдете решение, как только попросите о помощи. Я вытащил исходный код для основного модуля журнала и увидел, что они публиковали данные сообщения несколько иначе. Я изменил строку json, которую я отправлял, и все это прошло. Я думал, так как параметр для метода был:

UpdateTestimonial(TestimonialInfoDTO item) 

, что он ожидал:

{"item":{"TestimonialID":14,"IsPublished":false}} 

, но, оказывается, что он действительно хочет:

{"TestimonialID":14,"IsPublished":false} 

Во всяком случае, здесь это то, что я сделал, чтобы внести изменения; Я просто изменил способ создания данных для публикации.

var data = new TestimonialInfoDTO(objItem.TestimonialID(), objItem.IsPublished()); 

    $.ajax({ 
    ... 
    data: ko.toJSON(data), 

Я надеюсь, что это кому-то поможет. На данный момент не существует документации Dnn WebAPI.

Спасибо! Briana

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