我正在使用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);
}
它正在调用但接受的参数获取空值。
请让我知道我收到此错误的原因是什么。
提前致谢。
答案 0 :(得分:0)
我不确定将[HttpPost]
与[AcceptVerbs("GET")]
混合后会发生什么,但这可能是问题所在。
请注意,在GET方法中,您需要在非简单值类型的参数前面使用[FromUri]
属性,但在POST方法中不需要它。 This blog post很好地解释了WebAPI参数绑定。