小编use*_*592的帖子

如何使用ServiceStack实现删除服务调用

我有几个与使用ServiceStack的REST服务实现相关的问题.

  1. 对于GET操作,我将请求DTO定义如下:

    [Route("/Customer/{ID}", Verbs = "GET")]
    public class GetCustomer : IReturn<GetCustomerResponse>
    {
        ....
        ....
    }
    
    Run Code Online (Sandbox Code Playgroud)

这里"GetCustomer"是请求DTO,"GetCustomerResponse"是响应DTO.但是对于PUT/POST/DELETE操作,我只需要知道操作是否成功提交,如果'不'那么什么是异常.那么对于POST/PUT/DELETE我的请求dto定义应该是什么?它应该使用IReturnVoid,如下所示?

[Route("/Customer/{ID}", Verbs = "DELETE")]
public class DeleteCustomer : IReturnVoid
{
    ....
    ....
}
Run Code Online (Sandbox Code Playgroud)

如果我必须使用IReturnVoid,那么如何检索提交我的操作时可能发生的任何异常信息?

在服务堆栈的错误处理文档中,它是写的,我在下面引用

错误响应类型

抛出异常时返回的错误响应取决于是否存在常规命名的{RequestDto}响应DTO.

如果存在:

无论服务方法的响应类型如何,都会返回{RequestDto}响应.如果{RequestDto}响应DTO具有ResponseStatus属性,则会填充它,否则将不返回ResponseStatus.(如果您使用[DataContract]/[DataMember]属性修饰了{ResponseDto} Response类和属性,则还需要对ResponseStatus进行修饰以填充().

否则,如果不是:

返回一个通用的ErrorResponse,其中包含一个填充的ResponseStatus属性.

服务客户端透明地处理不同的错误响应类型,对于无模式格式(如JSON/JSV/etc),在自定义或通用ErrorResponse中返回ResponseStatus之间没有实际的明显区别 - 因为它们都在线路上输出相同的响应.

我从上面得到的是我的服务实现中的Delete方法的返回类型是什么?如何在不定义删除响应DTO的情况下实现我的删除方法但是我能够检索"ErrorResponse"n异常信息?

  1. 是否可以使用"DELETE"动词定义路线?我有以下实施.

路线:

[Route("/DeleteCustomer/{ID}", Verbs = "DELETE")]
public class DeleteCustomer : IReturn<DeleteCustomerResponse>
{
    public int ID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

方法实施:

public DeleteContactResponse Delete(DeleteContact request)
{
    .....
}
Run Code Online (Sandbox Code Playgroud)

但每当我使用我的客户端调用此删除时,我总是得到"NotFound"异常.我尝试了不同的客户端但是我得到了404错误.

与Servicestack文档一起提供的参考链接之一可以重复使用"GET"和"DELETE"动词.

另一个链接表明并非所有浏览器都支持删除操

所以我想知道如何实现删除操作?

c# rest servicestack

5
推荐指数
2
解决办法
6110
查看次数

使用knockout动态显示/隐藏元素

我有一个表有四列,即代码,名称,数量和价格.其中,我想动态更改Quantity列的内容/元素.通常,它应该显示元素中显示的数量,当用户点击元素时,我想显示元素,以便用户可以编辑数量.我正试图在这个淘汰文档链接上按照"示例2"实现.

以下是我的代码:

页面视图模型

function OrderVM (vm) {
    var self = this;
    self.OrderNo= ko.observable(vm.OrderNo());   
    .....
    .....
    self.OrderedProducts = ko.observableArray([]);
    for (i = 0; i < vm.OrderedProducts().length; i++) {
        var p = new ProductVM(vm.OrderedProducts()[i]);
        self.OrderedProducts.push(p);
    }
    .....
}

function ProductVM(vm) {
    var self = this;

    self.Code = ko.observable(vm.Code());
    self.Name = ko.observable(vm.Name());
    self.Quantity = ko.observable(vm.Quantity());
    self.Price = ko.observable(vm.Price());
    self.IsEditing = ko.observable(false);

    this.edit = function () {
        self.IsEditing(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的Razor视图中,我有以下代码:

<tbody data-bind="foreach:OrderedProducts">
<tr>
    <td class="lalign"><span data-bind="text:Code"/></td>
    <td class="lalign"><span data-bind="text:Name" …
Run Code Online (Sandbox Code Playgroud)

javascript jquery knockout.js asp.net-mvc-5

3
推荐指数
1
解决办法
4891
查看次数