Xóa ActionLink bằng hộp thoại xác nhận


98

Tôi đang cố gắng thực hiện một ActionLink sẽ xóa các bản ghi bằng ASP.NET MVC. Đây là những gì tôi có cho đến nay:

<%= Html.ActionLink("Delete", 
                    "Delete", 
                    new { id = item.storyId, 
                          onclick = "return confirm('Are you sure?');" 
                        })%> 

Tuy nhiên, nó không hiển thị hộp xác nhận. Rõ ràng là tôi đang thiếu một cái gì đó hoặc tôi đã xây dựng liên kết không chính xác. Có ai giúp được không?

Câu trả lời:


211

Đừng nhầm lẫn routeValuesvới htmlAttributes. Bạn có thể muốn quá tải này :

<%= Html.ActionLink(
    "Delete", 
    "Delete", 
    new { id = item.storyId }, 
    new { onclick = "return confirm('Are you sure you wish to delete this article?');" }) 
%>

16
Tránh xóa hồ sơ theo yêu cầu GET! stackoverflow.com/questions/786070/…
user1068352

6
Thực hiện kém. Không sửa đổi dữ liệu máy chủ trên GET
Dan Hunex

chắc chắn nó phải là: new {id = item.storyId, onclick = "return confirm ('Bạn có chắc chắn muốn xóa bài viết này không?');" })
Ravendarksky

Nếu chúng ta không muốn xóa bằng get thì làm thế nào để thông qua liên kết Hành động bằng ĐĂNG?
Unbreakable

1
Gọi cho $ .Ajax nếu xác nhận là CÓ?
Kiquenet

15

đó là những tuyến đường bạn đang đi qua

<%= Html.ActionLink("Delete", "Delete",
    new { id = item.storyId }, 
    new { onclick = "return confirm('Are you sure you wish to delete this article?');" })     %>

Phương thức được nạp chồng bạn đang tìm là phương pháp sau:

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    Object routeValues,
    Object htmlAttributes
)

http://msdn.microsoft.com/en-us/library/dd492124.aspx


15
<%= Html.ActionLink("Delete", "Delete",
    new { id = item.storyId }, 
    new { onclick = "return confirm('Are you sure you wish to delete this article?');" })     %>

Đoạn mã trên chỉ hoạt động với Html.ActionLink.

Đối với

Ajax.ActionLink

sử dụng mã sau:

<%= Ajax.ActionLink(" ", "deleteMeeting", new { id = Model.eventID, subid = subItem.ID, fordate = forDate, forslot = forslot }, new AjaxOptions
                                            {
                                                Confirm = "Are you sure you wish to delete?",
                                                UpdateTargetId = "Appointments",
                                                HttpMethod = "Get",
                                                InsertionMode = InsertionMode.Replace,
                                                LoadingElementId = "div_loading"
                                            }, new { @class = "DeleteApointmentsforevent" })%>

Tùy chọn 'Xác nhận' chỉ định hộp xác nhận javascript.


4

Bạn cũng có thể tùy chỉnh bằng cách chuyển mục xóa cùng với tin nhắn. Trong trường hợp của tôi sử dụng MVC và Razor, vì vậy tôi có thể làm điều này:

@Html.ActionLink("Delete", 
    "DeleteTag", new { id = t.IDTag }, 
    new { onclick = "return confirm('Do you really want to delete the tag " + @t.Tag + "?')" })

3

Thử cái này :

<button> @Html.ActionLink(" ", "DeletePhoto", "PhotoAndVideo", new { id = item.Id }, new { @class = "modal-link1", @OnClick = "return confirm('Are you sure you to delete this Record?');" })</button>

3

Sử dụng webgrid, bạn có thể tìm thấy nó ở đây , các liên kết hành động có thể giống như sau.

nhập mô tả hình ảnh ở đây

    grid.Column(header: "Action", format: (item) => new HtmlString(
                     Html.ActionLink(" ", "Details", new { Id = item.Id }, new { @class = "glyphicon glyphicon-info-sign" }).ToString() + " | " +
                     Html.ActionLink(" ", "Edit", new { Id = item.Id }, new { @class = "glyphicon glyphicon-edit" }).ToString() + " | " +
                     Html.ActionLink(" ", "Delete", new { Id = item.Id }, new { onclick = "return confirm('Are you sure you wish to delete this property?');", @class = "glyphicon glyphicon-trash" }).ToString()
                )

1

Với hình ảnh và xác nhận khi xóa, hoạt động trên mozilla firefox

<button> @Html.ActionLink(" ", "action", "controller", new { id = item.Id }, new { @class = "modal-link1", @OnClick = "return confirm('Are you sure you to delete this Record?');" })</button>
<style>
a.modal-link{ background: URL(../../../../Content/Images/Delete.png) no-repeat center;
            display: block;
            height: 15px;
            width: 15px;

        }
</style>

1

Tôi cũng muốn điều tương tự; một nút xóa trên chế độ xem Chi tiết của tôi. Cuối cùng tôi nhận ra rằng tôi cần phải đăng bài từ chế độ xem đó:

@using (Html.BeginForm())
        {
            @Html.AntiForgeryToken()
            @Html.HiddenFor(model => model.Id)
            @Html.ActionLink("Edit", "Edit", new { id = Model.Id }, new { @class = "btn btn-primary", @style="margin-right:30px" })

            <input type="submit" value="Delete" class="btn btn-danger" onclick="return confirm('Are you sure you want to delete this record?');" />
        }

Và, trong Bộ điều khiển:

 // this action deletes record - called from the Delete button on Details view
    [HttpPost]
    public ActionResult Details(MainPlus mainPlus)
    {
        if (mainPlus != null)
        {
            try
            {
                using (IDbConnection db = new SqlConnection(PCALConn))
                {
                    var result = db.Execute("DELETE PCAL.Main WHERE Id = @Id", new { Id = mainPlus.Id });
                }
                return RedirectToAction("Calls");
            } etc

0

nhập mô tả hình ảnh ở đâyMVC5 với xóa đối thoại & glyphicon. Có thể hoạt động các phiên bản trước.

@Html.Raw(HttpUtility.HtmlDecode(@Html.ActionLink(" ", "Action", "Controller", new { id = model.id }, new { @class = "glyphicon glyphicon-trash", @OnClick = "return confirm('Are you sure you to delete this Record?');" }).ToHtmlString()))

-1

Bất kỳ sự kiện nhấp chuột nào trước đó đối với hộp thông báo cập nhật / chỉnh sửa / xóa bản ghi sẽ cảnh báo người dùng và nếu "Ok" tiếp tục hành động khác thì "hủy" vẫn không thay đổi. Đối với mã này không cần phải mã tập lệnh java riêng biệt. nó làm việc cho tôi

<a asp-action="Delete" asp-route-ID="@Item.ArtistID" onclick = "return confirm('Are you sure you wish to remove this Artist?');">Delete</a>


-2

Bạn cũng có thể thử điều này cho Html.ActionLink DeleteId


3
Bạn có thể giải thích câu trả lời này một chút? Có thể cung cấp một đoạn mã thể hiện đề xuất của bạn hoặc mô tả vị trí trong mã OP, đoạn mã này sẽ đi đến đâu?
skrrgwasme
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.