Я изучаю ASP.NET mvc, поэтому я расширил учебник по списку Todo, чтобы использовать его в качестве основы для класса корзины покупок. Я не знаю, какой URL использовать для вызова метода Add контроллера Cart.
namespace TodoApi.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class TodoController : ControllerBase
{
public static TodoContext _context;
public TodoController(TodoContext context)
{
_context = context;
if (_context.TodoItems.Count() == 0)
{
// Create a new TodoItem if collection is empty,
// which means you can't delete all TodoItems.
_context.TodoItems.Add(new TodoItem { Name = "T-shirt", Price = 5.30 });
_context.TodoItems.Add(new TodoItem { Name = "Fedora Hat", Price = 7.70 });
_context.TodoItems.Add(new TodoItem { Name = "Socks", Price = 1.20 });
_context.SaveChanges();
}
}
}
}
Это класс TodoContext
namespace TodoApi.Models
{
public class TodoContext : DbContext
{
public TodoContext(DbContextOptions<TodoContext> options)
: base(options)
{
}
public DbSet<TodoItem> TodoItems { get; set; }
}
}
И модель TodoItem
:
namespace TodoApi.Models
{
public class TodoItem
{
public long Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public bool IsComplete { get; set; }
}
}
Это класс ShoppingCartContext
:
namespace TodoApi.Models
{
public class ShoppingCartContext : DbContext
{
public ShoppingCartContext(DbContextOptions<TodoContext> options)
: base(options)
{
}
public DbSet<TodoItem> CartItems { get; set; }
}
}
Мне нужно вызвать метод Add
в контроллере, но я не знаю, какой URL использовать:
namespace TodoApi.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class CartController : ControllerBase
{
private readonly ShoppingCartContext _context;
public CartController(ShoppingCartContext context)
{
_context = context;
}
[HttpGet]//List all the items in the cart
public ActionResult<List<TodoItem>> GetAll()
{
return _context.CartItems.ToList();
}
[HttpPost]
public IActionResult Add(long id)
{
var item = TodoController._context.TodoItems.Find(id);
System.Console.WriteLine(item.Name + item.Price.ToString());
_context.CartItems.Add(item);
_context.SaveChanges();
return CreatedAtRoute("GetCart", new { id = item.Id }, item);
}
}
}
У меня есть некоторый опыт использования Django, но ASP.NET для меня совершенно новый, я совершенно не знаю, как решить эту проблему.