【发布时间】:2021-08-12 18:48:57
【问题描述】:
我正在尝试将 ResumeInfo(Custom Object) 类型的对象从 razor 页面发送到另一个 razor 页面并且它工作正常.....但是我注意到该对象中的所有子对象都是空的,它们不是应该是因为他们有价值观。
这是我从中创建对象的类,它有一个其他对象的列表(经验、语言、技能),当我将对象从一个 Razor 页面发送到另一个页面时,列表返回空,即使对象具有值,因为我在我将对象发送到另一个页面之前对其进行了测试。
public class ResumeInfo
{
public string FullName { get; set; }
public string Profession { get; set; }
public List<string> Socials { get; set; }
public List<Skill> Skills { get; set; }
public List<Language> Languages { get; set; }
public List<Experience> Experiences { get; set; }
public string AboutMe { get; set; }
public List<Language> GetLanguages()
{
if (Languages == null)
Languages = new List<Language>();
return Languages;
}
public List<Skill> GetSkills()
{
if (Skills == null)
Skills = new List<Skill>();
return Skills;
}
public List<Experience> GetExperiences()
{
if (Experiences == null)
Experiences = new List<Experience>();
return Experiences;
}
}
这就是我发送对象的方式:
public class ResumeFormModel : PageModel
{
[BindProperty]
public ResumeInfo Info { get; set; }
public IActionResult OnPost()
{
int counter = 0;
var socials = Request.Form["Socials"];
var languagesName = Request.Form["LanguagesName"];
var languageValue = Request.Form["LanguagesValue"];
var skillsName = Request.Form["SkillsName"];
var skillsValue = Request.Form["SkillsValue"];
var expTitle = Request.Form["ExperienceTitle"];
var expText = Request.Form["ExperienceText"];
foreach(string str in socials)
{
Info.Socials.Add(str);
Console.WriteLine(str);
}
counter = 0;
foreach(string str in languagesName)
Info.GetLanguages().Add(new Language(str, Int32.Parse(languageValue[counter++])));
counter = 0;
foreach (string str in skillsName)
Info.GetSkills().Add(new Skill(str, Int32.Parse(skillsValue[counter++])));
counter = 0;
foreach (string str in expTitle)
{
Info.GetExperiences().Add(new Experience(str, expText[counter++]));
Console.WriteLine(str);
}
return RedirectToPage("GenerateResume", Info);
}
}
请注意,来自 Object(ResumeInfo) 的其他属性(如 (FullName, Profession, AboutMe))工作正常,并且它们具有值,它只是列表和子对象。
这就是我接收对象的方式。
public class GenerateResumeModel : PageModel
{
[BindProperty(SupportsGet = true)]
public ResumeInfo Info { get; set; }
public void OnGet()
{
//Console.WriteLine(Info.GetExperiences()[0].Name);
}
}
为什么不填充子对象?有没有其他方法可以发送对象?
【问题讨论】:
-
您是否在发送前检查您的信息是否有孩子?你有很奇怪的代码来添加孩子。