在我的 Razor .Net 6 應用程式的頁面上,我必須顯示 3 個模型的資料。所以我創建了一個 Model EigObjFact,包含三個需要的模型:
namespace StallingRazor.Model
{
public class EigObjFact
{
public Eigenaar Eigenaren { get; set; }
public IEnumerable<Model.Object> Objecten { get; set; }
public IEnumerable<Factuur> Facturen { get; set; }
}
}
在詳細資訊頁面控制器中,我在 OnGet 中呼叫 EigObjFact:
namespace StallingRazor.Pages.Eigenaren
{
public class DetailsModel : PageModel
{
private readonly ApplicationDbContext _db;
public DetailsModel(ApplicationDbContext db)
{
_db = db;
}
public async void OnGetAsync(int id)
{
EigObjFact model = new EigObjFact();
model.Eigenaren = _db.Eigenarens.Find(id);
model.Objecten = await _db.Objectens.Where(s => s.EigenarenID == id).ToListAsync();
model.Facturen = await _db.Facturens.Where(x => x.EigenarenID == id).ToListAsync();
}
}
}
3 個模型的映射在頁面中作業正常,因為我使用:
@model StallingRazor.Model.EigObjFact
問題:Details 頁面中的 OnGetAsync 處理程式從不觸發,因此在頁面中使用時模型為空。
我錯過了什么?
uj5u.com熱心網友回復:
剃須刀頁面的模型需要是一個型別。PageModel所以你需要替換@model StallingRazor.Model.EigObjFact為@model StallingRazor.Pages.Eigenaren.DetailsModel.
并且您需要添加一個型別為EigObjFactDetailsModel 的屬性,以便您可以EigObjFact model從DetailsModel:
namespace StallingRazor.Pages.Eigenaren
{
public class DetailsModel : PageModel
{
[BindProperty]
public EigObjFact model { get; set; }= new EigObjFact();
private readonly ApplicationDbContext _db;
public DetailsModel(ApplicationDbContext db)
{
_db = db;
}
public async void OnGetAsync(int id)
{
model.Eigenaren = _db.Eigenarens.Find(id);
model.Objecten = await _db.Objectens.Where(s => s.EigenarenID == id).ToListAsync();
model.Facturen = await _db.Facturens.Where(x => x.EigenarenID == id).ToListAsync();
}
}
}
那么如果你想使用視圖中的資料,EigObjFact model你可以嘗試使用@Model.model.xxx.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/444896.html
