0

I want to pass to RedirectToAction model with List type property

For example, I have this simple model:

public class OrgToChooseFrom
    {
        public string OrgId { get; set; }
        public string FullName { get; set; }
    }

And complex model as this:

public class SelectCounteragentViewModel
    {
        public List<OrgToChooseFrom> Counteragents { get; set; }
        public OrgToChooseFrom SelectedOrg { get; set; }
    }

When I pass simple model with RedirectToAction every value is in place

        [HttpGet]
        public IActionResult ConfirmChoice(OrgToChooseFrom vm)
        {
            return View(vm);
        }

But when I try to pass complex model SelectCounteragentViewModel, there are empty list and null for the "SelectedOrg" field

        [HttpGet]
        public IActionResult SelectFromCAOrganizations(SelectCounteragentViewModel vm)
        {
            return View(vm);
        }

How can I do it?

Zi Cold
  • 165
  • 8

1 Answers1

0

RedirectToAction cannot pass complex model.You can try to use TempData as Kiran Joshi said.Here is a demo:

public IActionResult Test()
        {
           
            SelectCounteragentViewModel vm = new SelectCounteragentViewModel { Counteragents = new List<OrgToChooseFrom> { new OrgToChooseFrom { OrgId ="1", FullName = "d" } }, SelectedOrg = new OrgToChooseFrom { OrgId = "1", FullName = "d" } };
            TempData["vm"] = JsonConvert.SerializeObject(vm);
            return RedirectToAction("SelectFromCAOrganizations", "ControllerName");
        }
[HttpGet]
        public IActionResult SelectFromCAOrganizations()
        {
            SelectCounteragentViewModel vm = JsonConvert.DeserializeObject<SelectCounteragentViewModel>(TempData["vm"].ToString());
            return View(vm);
        }
Yiyi You
  • 16,875
  • 1
  • 10
  • 22