我编写了以下代码,用于从客户端脚本调用API。
Cshtml
<button class="btn btn-link btn-sm js-toggleFollowing" data-user-id="@gig.ArtistId">Follow</button>
API调用:
$(".js-toggleFollowing").click(function (e)
{
var button = (e.target);
$.post("/api/followings", { followeeId: button.attr("data-user-id") })
.done(function ()
{
button.text("Following");
})
.fail(function ()
{
alert("Something failed");
})
});
API控制器方法
// Code for api call
[HttpPost]
public IHttpActionResult Follow(FollowingDto dto)
{
var userId = User.Identity.GetUserId();
if (_context.Followings.Any(f => f.FolloweeId == userId && f.FolloweeId == dto.FolloweeId.ToString()))
return BadRequest("The Following alreday exists.");
var following = new Following
{
FollowerId = dto.FolloweeId.ToString(),
FolloweeId = userId
};
_context.Followings.Add(following);
_context.SaveChanges();
return Ok();
}
DTO类:
public class FollowingDto
{
public int FolloweeId { get; set; }
}
API调用与邮递员一起工作,而没有将参数转换为DTO。但是当我使用dto作为参数时它不起作用。 dto类也被复制。
请帮助我解决此问题。