【问题标题】:How to delete mvc webgrid row by calling ajax?如何通过调用ajax删除mvc webgrid行?
【发布时间】:2013-12-02 02:38:27
【问题描述】:

在我的 mvc razor 视图中,我有一个包含 webgrid 数据的部分视图,我需要添加一个操作链接来删除该行数据,这就是我所做的: 这是javascript函数: 函数 delMeal(pid) {

        if (confirm("Do you want to delete Meal: " + pid)) {
            var data = { 'MealID': pid }
            $.post('/Travel/DeleteMeal', data,
            function (data) {
                if (data == true)
                    location = location.href;
                else
                    alert("Could not delete");
            });
        }
    }
</script>

这是控制器方法:

public JsonResult DeleteMeal(Int32 productId)
    {  
        //NWDataContext db = new NWDataContext();
        Meal product = db.Meals.Where(x => x.MealID == productId).FirstOrDefault();
        db.Meals.Remove(product);
        db.SaveChanges();

        return Json(true, JsonRequestBehavior.AllowGet);
    }

这是在 webgrid 上调用删除函数的行 @Html.ActionLink("Delete", "DeleteMeal", "Travel", new { onclick = "delMeal("+item.MealID+")"})

操作链接中的上述代码不起作用,因为我在其中添加了方法(“DeleteMeal”),但如果我删除该方法,则调用 javascript 函数,但不会调用方法(“DeleteMeal”)。 任何人都可以帮我完成@Html.ActionLink 中的代码工作吗?非常感谢,

【问题讨论】:

    标签: javascript ajax asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    试试这个:

    $.ajax({
            type: "POST",
            url: '/Travel/DeleteMeal'
            data: {
                productId:pid
            },
            dataType: "json",
            success: function(json) {
                if(!json.error) 
                $("#grid").load('Url which Send data to This grid');
            }
            error: errorFunc
    });
    

    然后查看您的 DeleteMeal 操作是否已调用或未更新。

    【讨论】:

    • 我认为razor视图中的代码必须改,你知道怎么改吗?
    • 我试过你的代码,我得到“成功”弹出窗口,我可以看到记录已从 SQL 表中删除,但我的页面重定向到不存在的新站点:请求的 URL:/Travel/ DeleteMeal 带有“找不到资源。”,因为我根本没有 DeleteMeal 视图,所以它很受欢迎,但它仍然直接指向它。 URL 是:“localhost:57166/Travel/DeleteMeal?Length=6”,删除后,我希望当前页面(剃刀视图)仍然留在那里,但包含已删除记录的 webgrid 将用删除后的行刷新。知道如何解决吗?
    • 我认为 razor 视图中的代码应该更改,请告诉我如何使它工作,@Html.ActionLink("Delete", "DeleteMeal", "Travel", new { onclick = "delMeal("+item.MealID+")"})
    • 由于控制器方法是由ajax代码调用的,所以我想我应该从ActionLink中删除它,所以我尝试了这个:@Html.ActionLink("Delete1", "", "", new { onclick = "delMeal("+item.MealID+")"}),这一次,没有错误,但是页面返回到主页,这不是我们想要的,我希望它保持在当前页面上,刷新 webgrid 是部分视图包含更新的 webgrid 数据。知道如何解决吗?
    • 我还将 JsonReult 更改为 ActionResult 并更改了 return Redirect(HttpContext.Request.UrlReferrer.AbsoluteUri);或添加这些代码 int FINtravelID = product.FINtravelID; FINtravel fintravel = 新的 FINtravel(); fintravel = db.FINtravels.Find(fintravelID); return PartialView("_MealPartial", fintravel);但没有运气。
    猜你喜欢
    • 2015-05-18
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 2013-03-05
    相关资源
    最近更新 更多