【问题标题】:Error checking in controller in ASP.NET Core MVC在 ASP.NET Core MVC 中检查控制器时出错
【发布时间】:2019-10-24 16:40:12
【问题描述】:

我正在发现 ASP.NET Core MVC,并且我正在进行我的第一个项目。创建一个很酷的网上商店。

我目前想知道如何在控制器中实现错误信息检查

假设有一个产品页面,每当用户点击产品时,他们都会点击下面的功能。

如您所见,该函数接受一个名为 id 的 int 参数,它将在数据库中搜索适合 productId 的 id,但我想知道如何在此处添加错误检查?比如如果id在数据库中不存在返回到页面XX?

如果您不喜欢该功能,也可以随时提出建议。

我已经尝试过做一个简单的 if 和 else 语句

if(productvm == null) 
{
    then
    return RedirectToPage("Index")
}
else  
    return View("ProductPage", productVm);

但它似乎没有命中 if 语句

[Route("ProductPage/{id}")]
public IActionResult ProductPage(int id)
{
    Product product = _uow.Products.SelectProduct(id);

    var stockViewModels = new List<StockViewModel>();

    foreach (Stock stock in product.Stock)
    {
        stockViewModels.Add(new StockViewModel()
            {
                Id = stock.Id,
                Description = stock.Description,
                IsAvailable = stock.IsAvailable,
                Quantity = stock.Quantity,
            });
    }

    ProductViewModel productVm = new ProductViewModel
        {
            Name = product.Name,
            Id = product.Id,
            Description = product.Description,
            Price = product.Price,
            Stocks = stockViewModels,
        };

    if (productVm == null)
    {
        return RedirectToPage("Productslist");
    }
    else
    {
        return View("ProductPage", productVm);
    }
}

如果在数据库中找不到id,我基本上想要一个错误处理控制器然后执行XX

我测试函数的方法是在浏览具有数据库中不存在的ID的页面时更改ID,然后我得到这个错误:

https://i.imgur.com/1amWx43.png

我想处理它

【问题讨论】:

  • 你能展示你的逻辑的完整代码吗?我在你上面的代码中没有看到任何if...else..
  • 是的已编辑帖子,基本上当我设置断点时 if 语句永远不会被命中

标签: asp.net-mvc asp.net-core model-view-controller error-handling


【解决方案1】:

我认为您的问题是您在 if 之前有新的 productVm 对象,因此它永远不会为空,对于您的情况,您应该检查产品对象而不是 productVm,例如:

    Product product = _uow.Products.SelectProduct(id);

    if (product == null)
    {
        return RedirectToPage("Productslist");
    }
    else
    {
        return View("ProductPage", productVm);
    }

【讨论】:

  • 将其更改为您的解决方案,然后在输入错误的产品 ID i.imgur.com/k8daTU8.png 时出现此错误
  • NVM 你是对的,我打错了。而不是 redirectToPage 我应该使用 redirectToAction
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-03
  • 1970-01-01
  • 2021-01-09
  • 2020-10-12
相关资源
最近更新 更多