api - 如何执行 DotNetNuke WebAPI 更新/删除?

标签 api controller dotnetnuke

我创建了一个 dnn 模块,使用 WebAPI 从服务器检索数据没有问题。但是,当我尝试执行更新时,无论我尝试什么,我都会继续收到错误消息。在 Firebug 中查看,我可以发布数据:

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

但是,当我调试时,我只看到默认 (null.setnull) 值(bool = false、int = 0、string = empty)。

然后,当然响应不好,结果如下: !( http://www.virtual-essentials.com/personal/firebug2.png )

我已经尝试了所有我能想到的事情的组合,但无法弄清楚这一点,我快要疯了。

这是ajax调用: //U//操作-更新 self.updateTestimonial = function (objItem) { var method = "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 Controller 调用:

    [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;
        }

    }

在此方面提供任何帮助,我们将不胜感激!

最佳答案

一旦寻求帮助,您总会找到解决方案。我提取了核心 Journal 模块的源代码,发现他们发布的帖子数据有点不同。我修改了我发送的 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 文档。

谢谢! 布丽安娜

关于api - 如何执行 DotNetNuke WebAPI 更新/删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16350510/

相关文章:

rest - Salesforce API - 使用复合字段。 (无法从 VALUE_STRING 反序列化 MailingAddress 的实例)

python - 用于模拟响应的 Python Quick Rest API

python - 将 Snowflake 表数据公开为 REST API

c# - 使用 Controller 操作过滤器捕获 HTML 输出

ruby-on-rails - 在 RSpec 测试中模拟子 uri

c# - DotNetNuke 7换肤教程

c# - DateTime.Compare 方法不适用于不同的语言

api - 是否可以在服务器端生成 Google App Invite?

asp.net-mvc - Thunderdome Action 调用程序 asp.net mvc

c# - 压缩 c# dnn 模块设置代码