Html 如何在刷新post方法后删除表项?

Html 如何在刷新post方法后删除表项?,html,ajax,asp.net-mvc,asp.net-core,Html,Ajax,Asp.net Mvc,Asp.net Core,这个问题与我在以前的帖子中遇到的代码和问题密切相关: 我有一个CheckOut-GET方法,用于构建订单模型并将其返回到CheckOut视图。我还有一个CheckOut-POST方法,它在CheckOut视图中填充其他字段并提交表单后处理已发布的订单模型 当ModelState.IsValid==false时,我遇到了一个问题。发生这种情况时,我将订单返回到checkout视图并显示错误。但是,如果此时我在签出视图中从表中删除项目并刷新页面,则已删除的项目将返回到表中 如果在发布任何内容之前从表

这个问题与我在以前的帖子中遇到的代码和问题密切相关:

我有一个CheckOut-GET方法,用于构建订单模型并将其返回到CheckOut视图。我还有一个CheckOut-POST方法,它在CheckOut视图中填充其他字段并提交表单后处理已发布的订单模型

当ModelState.IsValid==false时,我遇到了一个问题。发生这种情况时,我将订单返回到checkout视图并显示错误。但是,如果此时我在签出视图中从表中删除项目并刷新页面,则已删除的项目将返回到表中

如果在发布任何内容之前从表中删除项目并刷新页面,则不会发生这种情况。当然,这是因为CheckOut-GET方法从数据库中更新的表重建订单模型

我尝试过的事情:

  • 如果CheckOut POST中的ModelState.IsValid==false,则重定向到CheckOut GET操作。这解决了这个问题,但引入了一个新的问题,即如果表单填写不正确,视图会向用户显示表单错误。我猜这是因为ModelState被清除了

  • 另一个可能的解决方案是在每次发布CheckOut视图时重建订单模型。但是,我不想再次重建订单。我已经在GET方法中这样做了

  • 签出获取方法:

    [HttpGet]
    public IActionResult CheckOut(string Id)
    {
        Order order = new Order();
    
        order.CartId = Id;
    
        //populate order object's parameters
    
        return View(order);
    }
    
    检查柱法

    [HttpPost]
    public IActionResult CheckOut(Order order)
    {
        if (ModelState.IsValid == false)
        {
            return View("CheckOut", order);
        }
    
        //process the order object
    
        return RedirectToAction("PurchaseSummary", new { Id = order.OrderId });
    }
    
    我的结帐视图: 如果我要从表中删除一个项目并刷新视图而不再次过帐,则将运行CheckOut-POST方法,该项目将返回到表中。刷新时,我希望表中不包含该项


    编辑:我将FormCollection集合放在HttpPost中,在刷新页面的情况下,旧项目仍在集合中。

    我查看了前面的问题,您可能希望查看使用PartialView。这样,你的javascript就不需要保存你的类名记录,这可能会在你以后更新你的应用程序时出现问题。@the_lotus感谢你的评论。当你说JavaScript需要记录我的类名时,你是说我在这里硬编码了什么?:row.find(“输入[class=filmId]”)attr(“name”,“OrderDetailsList[“+I+”].Movie.filmId”);是的,您的delete方法可以返回一个包含所有表信息的局部视图,并使用该视图更新表。您能否验证HTML是否正常,是否包含旧记录的跟踪,以及索引的顺序是否正确?部分视图听起来更适合这样做,我可以实现它。我仍然想知道这里发生了什么,因为我缺乏理解。我检查了我的HTML代码,所有被删除记录的痕迹都消失了,索引也井然有序。然后我不知道为什么order包含旧项目的痕迹,因为它甚至不存在于发布的数据中。也许在HttpPost中放置一个FormCollection集合,看看是否有旧项。如果不是,我不知道它是如何填充的,除非它以某种方式来自会话。