我在C#控制器中设置了一个异步任务,如下所示:
命名空间MyApp.Api {
public class TimeAllocationController : BaseApiController
{
[Route("api/timeallocation")]
[HttpPost]
public async Task<ActivityValidationResult> Post(string id)
{
//logic here...
}理想情况下,我希望使用JQuery ()方法在$.post中传递整个有效负载,但是如果
我尝试在有效载荷中传递C#的Post()字符串Id。
$.post('/api/timeallocation/' + categoryId...我不能这样把它传进来:
$.post('/api/timeallocation?id=' + categoryId...我不想做上述任何一件事,只需在JS文件中设置一个带有id和所有其他必需属性的payload变量,然后调用$.post()。
至于405错误的其他可能原因,我已经证实不是由于身份验证的原因。
有什么东西我忽略了吗?
发布于 2018-09-26 20:52:00
我能够用控制器中的以下内容来解决这个问题:
public async Task<ActivityValidationResult> Post(string id, [FromBody] TimeAllocationActivity payload)其中payload处理TimeAllocationActivity属性。注意,我必须创建TimeAllocationActivity模型,因为它以前不存在。
在JS方面,我创建了有效负载变量,然后设置请求如下:
processCheckAjax = $.ajax({
url: "/api/timeallocation/" + categoryId,
dataType: "json",
type: "POST",
data: JSON.stringify(payload)我确实觉得奇怪的是,我仍然必须将categoryId附加到路由中,而且它不能包含在有效负载中。
发布于 2018-09-11 02:22:17
如果您想使用jquery中的有效负载来调用它,您应该使用带有[FromBody]属性的Post方法,如下所示:
public class TimeAllocationController : BaseApiController
{
[Route("api/timeallocation")]
[HttpPost]
public async Task<ActivityValidationResult> Post([FromBody] string id)
{
//logic here...
}然后你就可以用
$.ajax({
url: "/api/timeallocation/",
dataType: "json",
type: "POST",
data: {
id: categoryId
}
});发布于 2018-09-11 00:34:13
你应该打电话
$.post('/api/timeallocation/', categoryId)或者您可以添加id参数的FromUri属性并调用
$.post('/api/timeallocation?id' + categoryId)https://stackoverflow.com/questions/52266981
复制相似问题