Почему я теряю данные, хотя я явно сохранил их в свойстве

#c# #asp.net #oop #asp.net-core #razor-pages

#c# #asp.net #ооп #asp.net-core #razor-страницы

Вопрос:

Скриншоты ниже для пояснения
Используя razor pages, у меня есть страница под названием Products, на которой отображается продукт; изображение, название, цена и т.д. Эти сведения получены в моем методе get с использованием идентификатора, переданного с предыдущей страницы.

Я инициализирую свойство с именем Product типа Product для объекта, возвращаемого методом, чтобы получить product. Однако, когда OnPost() вызывается метод, сохраняется только идентификатор продукта в объекте (и я знаю, что это потому, что Id передается как параметр и, следовательно, легко доступен), все остальные отдельные фрагменты данных теряются. Я не могу понять, почему, заранее спасибо.

Продукт

 public class ProductModel : PageModel
{
    public string Identity { get; set; }
    public Product Product { get; set; }
    private readonly IShopService _shopService;
    private readonly UserManager<IdentityUser> _userManager;

    public ProductModel(UserManager<IdentityUser> userManager, IShopService shopService)
    {
        _userManager = userManager;
        _shopService = shopService;
    }
    private Task<IdentityUser> GetCurrentUserAsync() => _userManager.GetUserAsync(HttpContext.User);
    public void OnGet(int id, string identity)
    {
        Product = _shopService.GetProduct(id);
        Identity = identity;
    }

    public void OnPost()
    {
        _shopService.AddProductToBag(Product, GetCurrentUserAsync().Result);
    }
}
  

Объект Product во время <code>OnGet()</code>

На скриншоте выше показано, что происходит Product после GetProduct() выполнения. Он заполнен данными базы данных. Когда я пытаюсь использовать одни и те же данные для AddProductToBag в OnPost() каждом поле равно null.

Комментарии:

1. Пожалуйста, покажите нам публикуемую полезную нагрузку из Chrome Developer Tools (вкладка Сеть).

2. Я никогда не отправляю весь объект по Сети, только идентификаторы, поскольку я всегда могу использовать их для получения объектов из базы данных, показанный снимок экрана Product после _shopService.GetProduct(id); выполнения. Это не передается через Интернет, я сохраняю объект в приложении, которое будет использоваться для AddProductToBag() in OnPost() . Вы все еще хотите, чтобы я показывал полезную нагрузку? @mjwills

3. OnGet Вызывается по веб-запросу, отличному от OnPost . Вам нужно передать данные из браузера на сервер. Или вызов GetProduct в OnPost .

4. спасибо, что помогло! @mjwills