我有控制器
[HttpGet]
public IHttpActionResult GetUserRights(int id)
{
var rights = _rightsService.GetUserRights(id);
if (rights == null)
{
return new HttpActionResult(HttpStatusCode.BadRequest, "User not found");
}
return Ok(rights);
}
[HttpPost]
public IHttpActionResult SetUserRights(int id, IEnumerable<EditRightViewModel> rights)
{
Result result = _rightsService.SetUserRights(id, rights);
if (!result.IsSuccess)
{
return new HttpActionResult(HttpStatusCode.InternalServerError, result.Message);
}
return Ok(result.Data);
}
[HttpPost]
public IHttpActionResult SetUserRights(int id, int RightId, bool Enable)
{
Result result = _rightsService.SetUserRights(id, new List<EditRightViewModel>
{
new EditRightViewModel
{
RightId = RightId,
Enable = Enable
}
});
if (!result.IsSuccess)
{
return new HttpActionResult(HttpStatusCode.InternalServerError, result.Message);
}
return Ok(result.Data);
}
get请求正常,但帖子返回404。 请求是
User-Agent: Fiddler
Host: localhost:577
Content-Length: 44
Content-Type: application/json; charset=utf-8
{
"id":1,
"RightId":1,
"Enable":"true"
}
最初我想将数据发送到具有列表作为参数的post动作。我认为它返回404的原因是json不适合函数的参数。所以我简化了json和动作参数,但它仍然没有奏效。也许有人可以告诉问题的原因以及如何编写一个正确的json来发送列表作为参数?
答案 0 :(得分:0)
答案 1 :(得分:0)
Post Actions在body中不能包含大多数参数。 使用您需要的参数创建一个类。 ASP NET将进行绑定。
public IHttpActionResult SetUserRights(Right right){ /* ... */ }
public class Right {
public int id { get; set; }
public int RightId { get; set; }
public bool Enable { get; set; }
}
试试这个。