首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何执行DotNetNuke WebAPI更新/删除?

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

Stack Overflow用户
提问于 2013-05-03 10:04:35
回答 1查看 899关注 0票数 3

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

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

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

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

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

下面是ajax调用://U//操作-更新方法= self.updateTestimonial (objItem) { var method = "UpdateTestimonial";self.UpdatePublishStatus(objItem);

代码语言:javascript
运行
复制
    $.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控制器调用:

代码语言:javascript
运行
复制
    [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;
        }

    }

在这方面的任何帮助都是由衷的感谢!

EN

回答 1

Stack Overflow用户

发布于 2013-05-03 11:32:19

一旦你寻求帮助,你就会找到解决方案,这是永远不会失败的。我拉出了核心Journal模块的源代码,发现他们发布的post数据略有不同。我修改了我发送的json字符串,它全部通过了。我想既然该方法的参数是:

代码语言:javascript
运行
复制
 UpdateTestimonial(TestimonialInfoDTO item)

它所期待的:

代码语言:javascript
运行
复制
 {"item":{"TestimonialID":14,"IsPublished":false}}

但是,它真正想要的是:

代码语言:javascript
运行
复制
{"TestimonialID":14,"IsPublished":false}

无论如何,下面是我所做的更改;我只是更改了构建要发布的数据的方式。

代码语言:javascript
运行
复制
    var data = new TestimonialInfoDTO(objItem.TestimonialID(), objItem.IsPublished());

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

我希望这对某些人有帮助。在这一点上,没有太多的Dnn WebAPI文档。

谢谢!Briana

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16350510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档