ลบ ActionLink พร้อมกล่องโต้ตอบยืนยัน


98

ฉันพยายามใช้วิธีง่ายๆActionLinkที่จะลบบันทึกโดยใช้ ASP.NET MVC นี่คือสิ่งที่ฉันมีจนถึงตอนนี้:

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

อย่างไรก็ตามจะไม่แสดงกล่องยืนยัน เห็นได้ชัดว่าฉันพลาดบางอย่างหรือสร้างลิงก์ไม่ถูกต้อง ใครสามารถช่วย?

คำตอบ:


211

อย่าสับสนกับrouteValues htmlAttributesคุณอาจต้องการเกินพิกัดนี้ :

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

16
หลีกเลี่ยงการลบบันทึกตามคำขอ GET! stackoverflow.com/questions/786070/…
user1068352

6
การใช้งานไม่ดี อย่าแก้ไขข้อมูลเซิร์ฟเวอร์บน GET
Dan Hunex

ควรจะเป็น: new {id = item.storyId, onclick = "return confirm ('คุณแน่ใจหรือไม่ว่าต้องการลบบทความนี้?');" })
Ravendarksky

ถ้าเราไม่คิดว่าจะลบโดยใช้ get แล้วจะทำอย่างไรผ่านลิงค์ Action โดยใช้ POST?
Unbreakable

1
โทรไปที่ $ .Ajax ถ้ายืนยันว่าใช่?
Kiquenet

15

นั่นคือเส้นทางที่คุณกำลังผ่านไป

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

วิธีที่มากเกินไปที่คุณกำลังมองหาคือวิธีนี้:

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?');" })     %>

โค้ดด้านบนใช้ได้กับ Html.ActionLink เท่านั้น

สำหรับ

Ajax.ActionLink

ใช้รหัสต่อไปนี้:

<%= 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" })%>

ตัวเลือก "ยืนยัน" ระบุกล่องยืนยันจาวาสคริปต์


4

คุณยังสามารถปรับแต่งได้โดยส่งรายการลบไปพร้อมกับข้อความ ในกรณีของฉันใช้ MVC และ Razor ดังนั้นฉันจึงสามารถทำได้:

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

3

ลองสิ่งนี้:

<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

เมื่อใช้ webgrid คุณสามารถพบได้ที่นี่ลิงก์การดำเนินการอาจมีลักษณะดังต่อไปนี้

ป้อนคำอธิบายภาพที่นี่

    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

ด้วยภาพและการยืนยันในการลบซึ่งใช้งานได้กับ 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

ฉันต้องการสิ่งเดียวกัน ปุ่มลบในมุมมองรายละเอียดของฉัน ในที่สุดฉันก็รู้ว่าฉันต้องโพสต์จากมุมมองนั้น:

@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?');" />
        }

และในตัวควบคุม:

 // 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

ป้อนคำอธิบายภาพที่นี่MVC5 พร้อมลบบทสนทนา & glyphicon อาจใช้งานได้กับเวอร์ชันก่อนหน้า

@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

เหตุการณ์การคลิกใด ๆ ก่อนหน้าสำหรับการอัปเดต / แก้ไข / ลบบันทึกกล่องข้อความจะแจ้งเตือนผู้ใช้และหาก "ตกลง" ดำเนินการต่อสำหรับการดำเนินการอื่น "ยกเลิก" จะยังคงไม่เปลี่ยนแปลง สำหรับรหัสนี้ไม่จำเป็นต้องแยกโค้ดจาวาออกจากกัน มันได้ผลสำหรับฉัน

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


-2

คุณยังสามารถลองใช้ Html.ActionLink DeleteId


3
คุณช่วยอธิบายคำตอบนี้สักหน่อยได้ไหม อาจให้ข้อมูลโค้ดที่แสดงถึงข้อเสนอแนะของคุณหรืออธิบายว่าควรไปที่ใดในโค้ดของ OP
skrrgwasme
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.