繁体   English   中英

RedirectToAction正在传递一个空对象

[英]RedirectToAction is Passing a Null Object

我要在ac#控件下面粘贴一个代码段。 我不知道是要正确填充AddPerson的formViewModel,但是随后当我在下面的“ SaveForm”方法中调用RedirectToAction并传递formViewModel时,它变成空的“ SaveForm”方法。

关于我不了解的任何建议吗?

谢谢,

            [HttpPost]
        public IActionResult AddPerson(GikFormViewModel formViewModel)
        {
            if(formViewModel.Items == null)
            {
                //formViewModel.Items.Add(new GikItemViewModel() { })
                formViewModel.Items = new List<GikItemViewModel>();
            }
            if (!ModelState.IsValid)
            {
                return View("Index", formViewModel);
            }

        // REDIRECTING HERE TO "SaveForm" Formatting is not properly done

            return RedirectToAction("SaveForm", formViewModel);
            //return View("Index", formViewModel);
        }

        public IActionResult SaveForm(GikFormViewModel formViewModel)
        {
            var person = formViewModel.Person;
            var items = formViewModel.Items;
            var gikItems = new Collection<Gikitem>();
            //var gikPerson = new Gikperson();
            //var gikItem = new Gikitem();
            var gikPerson = new Gikperson()
            {
                Organization = person.Organization,
                Title = person.Title,
                Name = person.FirstName + " " + person.LastName,

                AddressLineOne = person.AddressLineOne,
                AddressLineTwo = person.AddressLineTwo == null ? null : person.AddressLineTwo,
                City = person.City,
                State = person.State,
                Zipcode = person.Zipcode,
                Phone = person.Phone,
                DoNoContact = person.DoNotContact == true ? 1 : 2,
                Email = person.Email
            };

尝试使用TempData

ASP.NET MVC中的TempData可用于存储可在后续请求中使用的临时数据。 完成后续请求后,将清除TempData。

AddPerson动作

[HttpPost]
public IActionResult AddPerson(GikFormViewModel formViewModel)
{
    if(formViewModel.Items == null)
    {
        //formViewModel.Items.Add(new GikItemViewModel() { })
        formViewModel.Items = new List<GikItemViewModel>();
    }
    if (!ModelState.IsValid)
    {
        return View("Index", formViewModel);
    }

    //Save the model into the TempData object.
    TempData["model] = formViewModel;

    return RedirectToAction("SaveForm");
    //return View("Index", formViewModel);
}

SaveForm动作

public IActionResult SaveForm()
{
    //If TempData doesn't contains your model then return error message or something.
    if(!TempData.ContainsKey("model"))
        return new HttpNotFoundResult();

    //Retrieve the model from TempData object.
    var formViewModel = TempData["model"] as GikFormViewModel;

    var person = formViewModel.Person;
    var items = formViewModel.Items;
    var gikItems = new Collection<Gikitem>();
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM