У меня есть этот метод:TempData не проходящий объект
[HttpPost]
public async Task<ActionResult> AddBookingCreditCard(TripViewModel model)
{
if (ModelState.IsValid)
{
// do nothing right now
}
TempData["ccInfo"] = model.CcInfo;
return RedirectToAction("Book", new{ id = model.Trip.TripId, travellers = model.Travellers});
}
В этом случае, model.CcInfo существует и содержит объект типа CcInfo. После RedirectToAction, этот метод называется:
[HttpGet]
public async Task<ActionResult> Book(int id, int travellers)
{
var vm = new TripViewModel();
vm.Travellers = travellers;
if (TempData["ccInfo"] != null)
vm.CcInfo = TempData["ccInfo"] as CcInfo;
// lot of code
return View("Index", vm);
}
Условный-оператор всегда терпит неудачу: TempDate [ «ccInfo»] равна нулю, в то время как он должен содержать мой объект.
Что я делаю неправильно?
EDIT: Класс CcInfo:
public class CcInfo
{
[Display(Name = "Name on Card"), Required]
public string CcName { get; set; }
[Display(Name = "Card Number"), DataType(DataType.CreditCard), Required]
public int CcNumber { get; set; }
[Display(Name = "Card CVV"), Required, Range(100, 999)]
public int CcCheck { get; set; }
}
Являются ли оба метода в одном контроллере? – ankur
Да, они! :) – Bv202
Что такое поставщик состояния сеанса? TempData полагается на сеанс. – b2zw2a