在没有视图的情况下执行web控制器操作[c#]
我有一个datatable,它从数据库中获取值,在最后一列的每一行上都有一个delete按钮在没有视图的情况下执行web控制器操作[c#],c#,jquery,asp.net-mvc,controller,C#,Jquery,Asp.net Mvc,Controller,我有一个datatable,它从数据库中获取值,在最后一列的每一行上都有一个delete按钮 $"<button type='submit' class='btn btn-danger test' id='{i.id}' onclick='return Delete();'>Delete</button>" 我的Jquery函数: function Delete() { var table = $("#tableOverviewGames").DataTabl
$"<button type='submit' class='btn btn-danger test' id='{i.id}' onclick='return Delete();'>Delete</button>"
我的Jquery函数:
function Delete() {
var table = $("#tableOverviewGames").DataTable();
$('#tableOverviewGames tbody').on('click', 'button', function () {
var idGame = $(this).attr('id');
$.ajax({
url: "Delete",
type: 'DELETE',
data: { id: idGame },
async: false,
contentType: false,
success: function (data) {
alert("Vous avez supprimé le jeu");
},
error: function (data) {
console.log(data);
}
});
});
}
有人能帮我吗
谢谢
编辑:
这是我在控制台中遇到的错误:
DELETE http://localhost:3673/Game/Delete 404 (Not Found)
为什么不直接从控制器返回JSON,比如
return Json(new {success = true})
然后,您可以(如果需要的话)检查ajax成功与否我发现,当您进行调用时,您传递了错误的Uri,这就是为什么找不到404 将HttpDelete属性更改为
[HttpDelete("{id}")]
将guid作为Uri的一部分传递,如,并且除非添加内容长度标头,否则为删除调用传递的任何正文都将被忽略,请选中此项
如果您仍然坚持要签名,请尝试更改签名,如下所示
[Authorize(Roles = "user")]
[HttpPost("delete")] //Added route to differentiate Create/Insert REST end point
public ActionResult Delete([FromBody]Guid id)
您的AJAX调用应该是
$.ajax({
url: "Delete",
type: 'DELETE',
data: idGame, // Pass value directly.
sync: false,
contentType: false,
success: function (data) {
alert("Vous avez supprimé le jeu");
},
如果我是你,我会开始使用基本类型(如字符串)测试导致麻烦的字段。我仍然会遇到以下错误`删除404(未找到)'@Jeremy Replace
HttpDelete
为HttpPost
。将您的类型更改为“POST”。更改contentType:'Application/json'
。删除这一行async:false
,最后可能最好使用@Url.Action(“删除”,“控制器”)
在本例中,由于“Delete”是一个非常常见的函数名,我更改了内容并在控制器操作上设置了一个断点,但它似乎没有到达控制器,因此出现以下错误:jquery-3.3.1.js:9600 POSThttp://localhost:3673/Game/Delete 500(内部服务器错误)
。你知道它可能是什么吗?@Jeremy如果你在使用Google Chrome,开发工具的网络部分是什么saying@Jeremy是的,对不起,我没看到。如果您将ID字符串化并在控制器方法中将参数更改为字符串,或者创建一个json,例如var json='{ID:'+idGame+''''}'
,然后将其作为ajax调用中的数据传递,那么您应该首先联系控制器建议您使用[HttpPost]
和类型:'POST'
,然后您可以更改为使用正确的动词。{i.id}
/$(this.attr('id')
)的实际值是多少?如果它与参数不匹配,那么它将fail@freedomn-m我让它与帖子一起工作,但与删除无关。不确定是什么导致了问题。来自i.id的值是一个Guid,但我猜它在jquery中被视为一个字符串。我认为您的代码使用API方法。[FromBody]不仅仅适用于API控制器吗?这可能就是您要寻找的:
$.ajax({
url: "Delete",
type: 'DELETE',
data: idGame, // Pass value directly.
sync: false,
contentType: false,
success: function (data) {
alert("Vous avez supprimé le jeu");
},