从 POST 操作验证模态后无法正常工作

Posted

技术标签:

【中文标题】从 POST 操作验证模态后无法正常工作【英文标题】:Modal not working properly after validating it from POST Action 【发布时间】:2021-10-26 01:06:31 【问题描述】:

我在我的应用程序中使用模态局部视图。我正在验证我的模型是否有错误我正在使用 ModelState.AddModelError() 返回模型,但它不能正常工作。另外,我无法加载 SelectLists。

public ActionResult StockOut(StockOut model)
    
        if (ModelState.IsValid)
        
            var stock = (from s in db.Stocks where s.ProductId == model.ProductId select s).FirstOrDefault();
            if (stock.Quantity > 0 && model.Quantity <= stock.Quantity)
            
                var weight = ((from p in db.Products where p.Id == model.ProductId select p).FirstOrDefault().NetWeight) * model.Quantity;
                stock.Quantity -= model.Quantity;
                stock.TotalWeight -= weight;
                StockOut entity = new StockOut()
                
                    DriverId = model.DriverId,
                    LastUpdated = DateTime.Now,
                    ProductId = model.ProductId,
                    Quantity = model.Quantity,
                    TotalWeight = weight
                ;
                db.StockOut.Add(entity);
                db.SaveChanges();
                return RedirectToAction("Index");
            
            else
            
                ModelState.AddModelError("Quantity", "Please Enter A Valid Quantity");
                ViewBag.ProductId = new SelectList(db.Products.ToList(), model.ProductId);
                ViewBag.DriverId = new SelectList(db.Products.ToList(), model.DriverId);
            
        
        ViewBag.ProductId = new SelectList(db.Products.ToList(), model.ProductId);
        ViewBag.DriverId = new SelectList(db.Users.ToList(), model.DriverId);
        return PartialView(model);
    

提交前:

出现错误后

【问题讨论】:

不幸的是,通过图像调试应用程序几乎是不可能的 如果您不向我们展示一些代码,我们无法猜测您在做什么(错误或正确) 对不起,我以为我已经添加了它。我的错! 【参考方案1】:

修复你选择列表,你创建它们两次,删除一组(在 if 中)

ViewBag.ProductId = new SelectList(db.Products.ToList(),"Id", "Name" , model.ProductId);

///Are you sure that you have have to use products again?

ViewBag.DriverId = new SelectList(db.Products.ToList(),"Id", 
"Name" , model.DriverId);

如果你想使用 AddModelError 你必须添加到表单

@html.ValidationSummary(false)

【讨论】:

不,我必须创建两次。如果模型状态为真,if 条件将起作用。然后将再次需要第二组,因为它要返回视图。如果我删除第二组,则会出现错误,因为视图找不到列表。

以上是关于从 POST 操作验证模态后无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

saveMany 验证无法正常工作

Laravel 最大验证无法正常工作

Qt如何使用模态(exec())实现等待效果,并同时进行其他操作?(先显示等待,再进行其他操作!)

无法修复 ASP.NET MVC 验证

在 IIS 中禁用匿名身份验证后 WebServiceHost 无法正常工作

输入类型 = 数字验证在角度中无法正常工作