use*_*456 1 c# dependency-injection asp.net-core
我在控制器中注入两个类。
在 get 请求中,当我放置断点时,我可以看到构造函数中正在检索一个实例。
但是在后操作中,实例为空?
这是我的控制器类;
using BethanyPieShop.Models;
using Microsoft.AspNetCore.Mvc;
namespace BethanyPieShop.Controllers
{
public class OrderController : Controller
{
public IOrderRepository _orderRepository { get; set; }
public ShoppingCart _shoppingCart { get; set; }
public OrderController(IOrderRepository _orderRepository, ShoppingCart _shoppingCart)
{
_orderRepository = _orderRepository;
_shoppingCart = _shoppingCart;
}
public IActionResult Checkout()
{
return View();
}
[HttpPost]
public IActionResult Checkout(Order order)
{
// Null here _shoppingCart
var items = _shoppingCart.GetShoppingCartItems();
_shoppingCart.ShoppingCartItems = items;
if (_shoppingCart.ShoppingCartItems.Count == 0)
{
ModelState.AddModelError("", "Your cart is empty, add some pies first");
}
if (ModelState.IsValid)
{
_orderRepository.CreateOrder(order);
_shoppingCart.ClearCart();
return RedirectToAction("CheckoutComplete");
}
return View(order);
}
public IActionResult CheckoutComplete()
{
ViewBag.CheckoutCompleteMessage = ", thanks for your order. You'll soon enjoy our delicious pies!";
return View();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在主类中注册了服务:
builder.Services.AddScoped<IOrderRepository, OrderRepository>();
builder.Services.AddScoped<ShoppingCart>();
Run Code Online (Sandbox Code Playgroud)
小智 5
您正在设置一个同名的变量。不使用“这个”。陈述。尝试更改以下内容
public OrderController(IOrderRepository _orderRepository, ShoppingCart _shoppingCart)
{
_orderRepository = _orderRepository;
_shoppingCart = _shoppingCart;
}
Run Code Online (Sandbox Code Playgroud)
到
public OrderController(IOrderRepository orderRepository, ShoppingCart shoppingCart)
{
_orderRepository = orderRepository;
_shoppingCart = shoppingCart;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
771 次 |
| 最近记录: |