Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Mihail-
0 / 0 / 0
Регистрация: 28.11.2019
Сообщений: 2
1

Глобальная переменная получает данные в одном методе но при запуске второго ,остается равна нулю или null

28.11.2019, 15:10. Просмотров 230. Ответов 1

Здравствуйте, недавно познакомился с ASP.NET ,пишу по курсовому проекту сайт-магазин, у меня появилась проблема с реализацией корзиной товаров-оформлением заказа. Проблема в том что у меня есть глобальная переменная int id ,которой я передаю id объекта в методе AddToCart ,когда добавляю товар в корзину , после заполняю данные покупателя в другом представлении и нажимаю кнопку "оформить заказ", вызывается метод Checkout ,который должен получить этот айдишник и найти объект из БД , но объект не находит из-за того что id остается равен нулю. Помогите понять в чем проблема.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
public class CartController : Controller
    {
        EFDbContext context = new EFDbContext();
  
    [B]    int id;[/B]
 
        string NAME;
        string ADRESS;
        bool PAYMENT;
 
        private IGameRepository repository;
        private IOrderProcessor orderProcessor;
 
        public CartController(IGameRepository repo, IOrderProcessor processor)
        {
            repository = repo;
            orderProcessor = processor;
        }
        public ViewResult Checkout()
        {
            return View(new ShippingDetails());
        }
 
        [HttpPost]
        public ViewResult Checkout(Cart cart, ShippingDetails shippingInfo,Order order)
        {
            Game game = repository.Games
                .FirstOrDefault(g => g.GameId == id);
            if (cart.Lines.Count() == 0)
            {
                ModelState.AddModelError("", "Извините, ваша корзина пуста!");
            }
 
            if (ModelState.IsValid)
            {
             
                NAME = shippingInfo.Name;
                ADRESS= shippingInfo.Line1;
                 PAYMENT= shippingInfo.Payment;
                
                AddNewOrder(order,game);
              //  orderProcessor.ProcessOrder(cart, shippingInfo);
              
                cart.Clear();
                return View("Completed");
            }
            else
            {
           
                return View(shippingInfo);
            }
        }
 
        public ViewResult Index(Cart cart, string returnUrl)
        {
            return View(new CartIndexViewModel
            {
                Cart = cart,
                ReturnUrl = returnUrl
            });
        }
 
        public RedirectToRouteResult [B]AddToCart[/B](Cart cart, int gameId, string returnUrl,Order order,ShippingDetails shippingInfo)
        {
            id = gameId;
            
            Game game = repository.Games
                .FirstOrDefault(g => g.GameId == gameId);
                
 
            if (game != null)
            { 
                cart.AddItem(game, 1);
            }
            return RedirectToAction("Index", new { returnUrl });
        }
 
 
        public Order NewOrder(Order order,Game game)
        {
            order.Adress =ADRESS;
            order.NameOfCustomer = NAME;
            order.StatusOfOrder = PAYMENT;
            order.SoldGame = game.Name;
            order.DateOfOrder = DateTime.Now;
            order.PriceOfSoldGame = game.Price;
            return order;
        }
     
 
        public void AddNewOrder(Order order, Game game)
        {
 
            if (game != null)
            {
                   var ord= NewOrder(order,game);
                    context.Orders.Add(ord);
                    context.SaveChanges();
            }
            
        }
    }
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2019, 15:10
Ответы с готовыми решениями:

Не изменяется глобальная переменная в методе
В методе "loadpt2" заполняю массив потоков. Он по моему глобальный, тогда почему при выходе с...

Глобальная переменная изменяется только во вложенной функции,а за пределами остается прежней
Глобальная переменная не изменяется вне вложенной функции, нужно переменную checkName использовать...

Глобальная переменная не меняет значение в Асинхронном методе
Здравствуйте, возникла следующая проблема: У меня есть асинхронный метод где я считываю данные...

TMemIniFile переменная получает значение NULL
Здрасте, нужна ваша помощь. Возникла ошибка, которую я очень долго не могу решить. Ini файл: ...

1

sau
2348 / 1818 / 322
Регистрация: 22.07.2011
Сообщений: 6,972
Завершенные тесты: 1
05.12.2019, 13:56 2
Mihail-, на каждый запрос создается новый экземпляр контроллера.
Используйте состояние сеанса для хранения временных данных - Session
1
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2019, 13:56

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.