访问 Razor 页面中的属性
Accessing Properties in Razor Pages
当尝试在 OnPost() 操作中访问公司 属性 时,它是空的,但它不在 OnGet() 中。
总的来说,我是 .net 中的 Razor Pages 和 MVC 的新手。
public class CreateModel : PageModel
{
ICompanyRepository _companyRepository;
public CreateModel(ICompanyRepository companyRepository)
{
_companyRepository = companyRepository;
}
[BindProperty]
public Company company { get; set; }
[TempData]
public string Message { get; set; }
[BindProperty]
public List<Company> Companies { get; set; }
public void OnGet()
{
Companies =_companyRepository.GetCompanies();
}
public IActionResult OnPost()
{
company.DatabaseId = Companies.Find(x =>
x.CompanyId.Equals(company.CompanyId)).DatabaseId;
company.Active = true;
if(ModelState.IsValid)
{
try
{
_companyRepository.Create(company);
}
catch (Exception ex)
{
Message = ex.Message;
return Page();
}
}
else
{
Message = "Please complete form";
}
return Page();
}
}
我希望我能够通过我的任何操作访问公司 属性。但是当我去 Find inside Companies 时,它是空的。我也在使用同一个列表来填充页面上的选择列表,并且列表按预期填充。一旦我转到 post,它就是空的。我感谢任何人可以提供的任何帮助。
网络是无状态的。每次向页面发出请求时,无论是 get
还是 post
请求的结果,都会创建页面的 PageModel class 并将其属性设置为默认值.一旦它完成了它的工作并生成了要渲染的 HTML,它和它的属性就会被销毁。
目前,您仅在请求使用 get
动词时填充 Companies
属性。当动词为 post
:
时,您还需要填充 属性
public IActionResult OnPost()
{
Companies =_companyRepository.GetCompanies();
company.DatabaseId = Companies.Find(x => x.CompanyId.Equals(company.CompanyId)).DatabaseId;
...
当尝试在 OnPost() 操作中访问公司 属性 时,它是空的,但它不在 OnGet() 中。
总的来说,我是 .net 中的 Razor Pages 和 MVC 的新手。
public class CreateModel : PageModel
{
ICompanyRepository _companyRepository;
public CreateModel(ICompanyRepository companyRepository)
{
_companyRepository = companyRepository;
}
[BindProperty]
public Company company { get; set; }
[TempData]
public string Message { get; set; }
[BindProperty]
public List<Company> Companies { get; set; }
public void OnGet()
{
Companies =_companyRepository.GetCompanies();
}
public IActionResult OnPost()
{
company.DatabaseId = Companies.Find(x =>
x.CompanyId.Equals(company.CompanyId)).DatabaseId;
company.Active = true;
if(ModelState.IsValid)
{
try
{
_companyRepository.Create(company);
}
catch (Exception ex)
{
Message = ex.Message;
return Page();
}
}
else
{
Message = "Please complete form";
}
return Page();
}
}
我希望我能够通过我的任何操作访问公司 属性。但是当我去 Find inside Companies 时,它是空的。我也在使用同一个列表来填充页面上的选择列表,并且列表按预期填充。一旦我转到 post,它就是空的。我感谢任何人可以提供的任何帮助。
网络是无状态的。每次向页面发出请求时,无论是 get
还是 post
请求的结果,都会创建页面的 PageModel class 并将其属性设置为默认值.一旦它完成了它的工作并生成了要渲染的 HTML,它和它的属性就会被销毁。
目前,您仅在请求使用 get
动词时填充 Companies
属性。当动词为 post
:
public IActionResult OnPost()
{
Companies =_companyRepository.GetCompanies();
company.DatabaseId = Companies.Find(x => x.CompanyId.Equals(company.CompanyId)).DatabaseId;
...