我正在开发一个包含多个用户的Web应用程序。在我的一个视图中,我有一个有删除按钮的表。该按钮必须删除整行。
我可以在按钮上使用类似的东西:
<a asp-action="Delete" asp-route-id="@item.ID" class="btn btn-primary">Delete</a>
但是,我读到这是一个不好的方法,因为在修改服务器上的资源时必须使用POST。使用Form标签似乎不是一个选项,因为我可以有100或200行。我错了吗?
这就是为什么我尝试使用AJAX,以便在点击按钮时在后台发布。然而,这也给了我很多问题。有时我遇到了来自服务器的未经授权的响应。我正在使用Identity框架。
过去一周,我一直试图寻找解决方案。我读过令牌可以用于身份验证,但是,对于这样一个简单的问题来说,这似乎有些过分。谢谢你的帮助服务器端:
[Authorize]
[HttpGet]
public IActionResult GetAllWorkOrders()
{
var UserId = _userManager.GetUserId(User);
var allWorkOrders = _context.UserHistoryDTI.Include(_ => _.WorkOrdersHistory).Where(_ => _.UserId == UserId).FirstOrDefault().WorkOrdersHistory;
return Ok(JsonConvert.SerializeObject(allWorkOrders));
}
客户方:
function GetWorkOrderList() {
$.ajax({
url: '/DTClocking/api/myhours/GetAllWorkOrders',
type: "GET",
success: function (data) {
var objData = JSON.parse(data);
var option = "<option>All</option>";
for (var i = 0; i < objData.length; i++) {
option += '<option>' + objData[i].Name + '</option>';
}
$("#workOrderListDTI").empty();
$("#workOrderListDTI").append(option);
}
});
}
当我在本地测试时,根本不存在身份验证问题。问题开始发生的唯一时间是我试图通过计算机(在我们的本地网络上)访问该网站。更糟糕的是,问题有时是不一致的,有时它不起作用。