刷新发布方法后如何保持表项目被删除?

此问题与我的旧帖子How to post table data without refreshing my view after removing a record?中的代码和问题密切相关。

我有一个CheckOut GET方法,该方法将构建一个Order模型并将其返回到CheckOut视图。在填写CheckOut视图中的其他字段并提交表单之后,我还有一个CheckOut POST方法来处理POSTed Order模型。

当ModelState.IsValid == false时,我遇到了问题。发生这种情况时,我将Order返回到结帐视图并显示错误。但是,如果此时我从CheckOut视图中的表中删除了项目并刷新了页面,则我删除的项目将返回到表中。

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

我尝试过的事情:

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

  2. 另一种可能的解决方案是每次我发布CheckOut视图时都重新构建Order模型。但是,我不想再次重建订单。我已经在GET方法中做到了。

CheckOut GET方法:

[HttpGet]
public IactionResult CheckOut(string Id)
{
    Order order = new Order();

    order.CartId = Id;

    //populate order object's parameters

    return View(order);
}

CheckOut POST方法

[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 });
}

我的结帐视图:https://i.imgur.com/gbl3kSH.png 如果我要从表中删除一个项目并刷新视图而不重新发布它,则将运行CheckOut POST方法,并且该项目将返回到表中。我希望表格在刷新时不包含该项目。

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

happynpuzy 回答:刷新发布方法后如何保持表项目被删除?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3165058.html

大家都在问