[英]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.