[英]Sweet alert doesn't send the Id of my element when submiting the form (ASP.Net core mvc)
我有一个关于在Asp.net核心2.2 mvc上使用甜蜜警报的问题。 在尝试发出警报以确认我的控制器AdminUsersController
上的发布事件时,该操作返回错误,因为请求的id为null
,但是当我不使用sweet alert时,该事件工作正常。
我试图让这个在Visual Studio 2017社区的Asp.net核心2.2上工作,我之前从未遇到任何有关Id的crud操作的问题。 我正试图让它在一个桌面上工作,其中有许多不同的ID结果。
像这样: https : //gyazo.com/9366bab83fa4401e1b88b28e27ffa55f
控制器索引帖子
//== Action - Index
[Authorize(Roles = SD.Tier3User)]
[HttpPost, ValidateAntiForgeryToken]
public async Task<ActionResult> Index(string id)
{
var UserFromDb = await _db.ApplicationUser.FindAsync(id);
if (UserFromDb.LockoutEnabled == true)
{
//== Lo desactiva (LockOutEnabled = 0)
UserFromDb.LockoutEnabled = false;
}
else
{
//== Lo activa (LockOutEnabled = 1)
UserFromDb.LockoutEnabled = true;
}
await _db.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
HTML按钮
<td>
@if (User.IsInRole(SD.Tier3User))
{
<a asp-action="Edit" asp-route-id="@item.User.Id" class="btn btn-sm
btn-outline-primary">Editar</a>
== HERE I USE SWEET ALERT ===
@if (item.User.LockoutEnabled)
{
<button type="submit" onclick="CambiarEstado()" asp-route-id="@item.User.Id" class="btn btn-sm btn-outline-warning">Desactivar</button>
}
else
{
<button type="submit" onclick="CambiarEstado()" asp-route-id="@item.User.Id" class="btn btn-sm btn-outline-success">Re-activar</button>
}<a asp-action="Delete" asp-route-id="@item.User.Id" class="btn btn-sm btn-outline-danger"><i class="far fa-trash-alt"></i></a>
}
</td>
JS Sweet警报
<script>
function CambiarEstado() {
document.querySelector('#Estado').addEventListener('submit', function (event) {
var form = this;
event.preventDefault();
swal({
title: "¿Desea cambiar el estado de este usuario?",
icon: "success",
buttons: [
'No',
'Si'
],
}).then(function (isConfirm) {
if (isConfirm) {
swal("¡Estado cambiado!", {
buttons: false,
timer: 500,
}).then(function () {
form.submit();
});
} else {
swal("Acción cancelada", "Recuerde que un usuario desactivado no puede entrar al sistema", "error");
}
})
});
}
</script>
假设要取消激活用户,但首先询问我是否确定该操作,而是返回错误,因为post事件获得的id为null
。
提前致谢!
asp-route-*
属性在button
元素上无效。 该属性是专门通过利用AnchorTagHelper
(即,对于a
元素)。 您需要使用实际的锚标记,并将其设置为按钮:
<a onclick="CambiarEstado()" asp-action="Foo" asp-route-id="@item.User.Id" class="btn btn-sm btn-outline-warning">Desactivar</a>
或者,您需要在form
标记中创建隐藏输入以保存ID:
<input type="hidden" name="id" value="@item.User.Id" />
注意:目前还不清楚这里发生了什么,所以你应该记住,如果你使用动作链接方法,那就不会提交任何内容。 那时它是一个常规的GET请求, id
将作为查询参数添加到生成的href
中(因此需要指定asp-action
)。 更有可能的是,您希望坚持使用按钮并添加隐藏的输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.