我有以下課程(為簡潔起見減少了)
[BindProperty(SupportsGet = true)]
public List<Expenditure> ListExpendituresOver90Days { get; set; }
public async Task OnGetAsync(int projectId, string ExpenditureFilter, string personnelNo)
{
ListExpendituresOver90Days = ExpendituresList.ToList();
}
public async Task<IActionResult> OnPostButtonAsync()
{
return page();
}
和cshtml:
@model WorkInProgress.Pages.Expenditures
<thead>
<tr>
<th class = text-start>Task Number</th>
<th class = text-start>Expenditure Type</th>
<th class = text-end>Item Date</th>
<th class = text-end>Billable</th>
<th class = text-end>Vendor Id</th>
<th class = text-start>Vendor Name</th>
<th class = text-end>Revenue Amount</th>
<th class = text-end>Comments</th>
</tr>
</thead>
<tbody>
@for (var x = 0; x < @Model.ListExpendituresOver90Days.Count(); x )
{
@Html.HiddenFor(model => model.ListExpendituresOver90Days[x].ExpenditureItemId)
<tr>
<td class=text-start>@Model.ListExpendituresOver90Days[x].TaskNumber</td>
<td class=text-start>@Model.ListExpendituresOver90Days[x].ExpenditureType</td>
<td class=text-end>@Model.ListExpendituresOver90Days[x].ExpenditureItemDate.ToString("dd-MMM-yyyy")</td>
<td class=text-end>@Model.ListExpendituresOver90Days[x].BillableFlag</td>
<td class=text-end>@Model.ListExpendituresOver90Days[x].VendorId</td>
<td class=text-start>@Model.ListExpendituresOver90Days[x].SupplierName</td>
<td class=text-end>@Model.ListExpendituresOver90Days[x].ProjFuncRevenueAmount</td>
<td class=text-end>
<textarea class="form-control" form="MainForm" asp-for="@Model.ListExpendituresOver90Days[x].ExpenditureComment" rows="1"></textarea>
</td>
</tr>
}
</tbody>
<div class="form-control">
<button type="submit" class="btn btn-primary" asp-page-handler="Button">Save</button>
</div>
當頁面加載時,所有列的資料都被填充,并且物件“ListExpendituresOver90Days”包含列舉器,其中填充了所有屬性:

但是,當我單擊“保存”按鈕并呼叫 onPost 方法時,該物件回傳為空,但在注釋 TextArea 中插入的值除外:

我已嘗試僅放置復制錯誤所需的內容,但如果有用,我將在此處放置一個 GIST,其中包含我在此螢屏上擁有的所有代碼:
https://gist.github.com/gasguirre/18a19d07cf1c14db2aafb539253461f9
我用于無法正常作業的 For 回圈的部分位于“_Over90DaysExpenditureLayout.cshtml”中
uj5u.com熱心網友回復:
這就是網路的作業方式——它在設計上是無狀態的。當您發出 GET 請求時,您的 PageModel 將被實體化并OnGet呼叫該方法。一旦發送了 HTML 回應,PageModel 實體及其所有狀態都會被銷毀。當您發出 POST 請求時,會創建一個新的 PageModel 實體并OnPostButtonAsync呼叫該方法。該OnGetAsync方法不是 - 按照慣例,它僅用于 GET 請求。如果您希望Expenditure在 POST 請求處理程式中重構每個中的所有值,您可以為每個值創建隱藏欄位。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/497161.html
上一篇:為什么GetFromJsonAsync無法決議JSON而ReadFromJsonAsync可以決議相同的JSON回應?
