MVC:Javascript确认删除操作不起作用
我对MVC和Javascript非常陌生;我试图使删除操作正常工作;我使用带有Javascript函数的ActionLink进行确认。JAvascript确认不起作用,甚至当我按下Cancel时,删除操作也会被触发;此外,我似乎无法对操作使用[HttpDelete]动词:我需要向删除操作传递两个参数,但在它搜索的操作链接上应用@Html.HttpMethodOverride(Http.Delete)之后 对于只有一个parmaeter:id的URL 这是我的代码:动作链接MVC:Javascript确认删除操作不起作用,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我对MVC和Javascript非常陌生;我试图使删除操作正常工作;我使用带有Javascript函数的ActionLink进行确认。JAvascript确认不起作用,甚至当我按下Cancel时,删除操作也会被触发;此外,我似乎无法对操作使用[HttpDelete]动词:我需要向删除操作传递两个参数,但在它搜索的操作链接上应用@Html.HttpMethodOverride(Http.Delete)之后 对于只有一个parmaeter:id的URL 这是我的代码:动作链接 @Html.Http
@Html.HttpMethodOverride(HttpVerbs.Delete)
@Html.ActionLink(
"Delete",
"Delete",
new {id=notification.Id, typeId=notification.TypeId},
new {onclick="confirmDeleteAction()"})
function confirmDeleteAction() {
return confirm('Are you sure you want to delete the notification ?');
}
删除操作:
[HttpDelete]
public ActionResult Delete(int id, int typeId)
{
Service.DeleteNotification(id, typeId);
NewIndexViewModel model = Service.GetNewIndexViewModel();
return View("Index", model);
}
当用户单击“取消”时,您需要取消浏览器的默认行为。您可以通过将
confirmDeleteAction()
的结果返回到您的
标记来执行此操作:
@Html.ActionLink(
"Delete",
"Delete",
new {id=notification.Id, typeId=notification.TypeId},
new {onclick="return confirmDeleteAction()"})
为清楚起见,我将return
关键字添加到onclick
处理程序中,该处理程序将confirmDeleteAction()
的结果返回到浏览器-
true
=执行链接的默认行为
false
=什么都不做当用户单击“取消”时,需要取消浏览器的默认行为。您可以通过将confirmDeleteAction()
的结果返回到您的
标记来执行此操作:
@Html.ActionLink(
"Delete",
"Delete",
new {id=notification.Id, typeId=notification.TypeId},
new {onclick="return confirmDeleteAction()"})
为清楚起见,我将return
关键字添加到onclick
处理程序中,该处理程序将confirmDeleteAction()
的结果返回到浏览器-
true
=执行链接的默认行为
false
=什么都不做试试这个
@Html.ActionLink(
"Delete",
"Delete",
new {id=notification.Id, typeId=notification.TypeId},
new {onclick="return confirmDeleteAction();"})
试试这个
@Html.ActionLink(
"Delete",
"Delete",
new {id=notification.Id, typeId=notification.TypeId},
new {onclick="return confirmDeleteAction();"})
您也可以通过以下方式执行此类型
@Html.ActionLink(
"Delete",
"Delete",
new {id=notification.Id, typeId=notification.TypeId},
new {onclick="confirmDeleteAction(" + notification.Id + ")" })
function OnDeleteClick(id) {
var ActionID = id;
var flag = confirm('Are you sure you want to delete this record?');
if (flag) {
return true;
}
else{
return false;
}
您也可以通过以下方式执行此类型
@Html.ActionLink(
"Delete",
"Delete",
new {id=notification.Id, typeId=notification.TypeId},
new {onclick="confirmDeleteAction(" + notification.Id + ")" })
function OnDeleteClick(id) {
var ActionID = id;
var flag = confirm('Are you sure you want to delete this record?');
if (flag) {
return true;
}
else{
return false;
}
若要传递两个参数以删除方法,您必须在Route.config fileVisit中添加一个条目。若要使用verbs传递两个参数以删除方法,您必须在Route.config fileVisit中添加一个条目。若要使用有效的verbs,谢谢!只剩下一个问题:在使用HttpDelete动词时使动作起作用;知道为什么我不能将两个参数传递给一个带有HttpDelete动词的动作吗?@OctavianEpure尝试删除动词,然后它将在简单的MVCI中工作。知道它在没有动词的情况下工作,我只是想使用HttpDelete动词来避免使用GET。我在这里找到了一篇文章,其中解释了安全原因。此外,我想避免张贴,因为我已经在表单上有一个提交按钮。这是一个复杂的索引视图,可以从中触发多个操作:添加、编辑、删除、归档项目,我不想用多个post操作使其过于复杂,也不想使用安全的方式进行删除。否则,我可以使用GET-delete操作,希望一切顺利:)这很有效,谢谢!只剩下一个问题:在使用HttpDelete动词时使动作起作用;知道为什么我不能将两个参数传递给一个带有HttpDelete动词的动作吗?@OctavianEpure尝试删除动词,然后它将在简单的MVCI中工作。知道它在没有动词的情况下工作,我只是想使用HttpDelete动词来避免使用GET。我在这里找到了一篇文章,其中解释了安全原因。此外,我想避免张贴,因为我已经在表单上有一个提交按钮。这是一个复杂的索引视图,可以从中触发多个操作:添加、编辑、删除、归档项目,我不想用多个post操作使其过于复杂,也不想使用安全的方式进行删除。否则,我可以使用GET delete操作,希望一切顺利:)