使用Breeze调用POST方法不起作用

时间:2014-01-16 07:20:07

标签: breeze hottowel

我正在使用HotTowel处理单页面应用程序。我在下面提到了使用breeze调用POST方法的链接。

http://www.breezejs.com/breeze-labs/breezeajaxpostjs

以下是我的代码。

在服务器端:

  public struct Customer {
            public string CompanyName{ get; set; }
            public string Phone { get; set; }
        } 

    [HttpPost]
    public IQueryable<Customer> SimilarCustomersPOST(Customer customer)
    {
        return repository.CustomersLikeThis(customer);
    }

使用breeze调用POST方法。

var query = breeze.EntityQuery.from('SimilarCustomersPOST')
       .withParameters({
           $method: 'POST',
           $encoding: 'JSON',
           $data: { CompanyName: 'Hilo' , Phone: '808-234-5678' }
       });

我收到以下错误: 错误:请求的资源不支持http方法'GET'。

当我编写如下服务器代码时:

[System.Web.Http.AcceptVerbs("GET", "POST")]
 [HttpPost]
        public IQueryable<Customer> SimilarCustomersPOST(Customer customer)
        {
            return repository.CustomersLikeThis(customer);
        }

它正在调用但接受的参数获取空值。

请让我知道我收到此错误的原因是什么。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我不确定将[HttpPost][AcceptVerbs("GET")]混合后会发生什么,但这可能是问题所在。

请注意,在GET方法中,您需要在非简单值类型的参数前面使用[FromUri]属性,但在POST方法中不需要它。 This blog post很好地解释了WebAPI参数绑定。