我使用“POST”方法在表單內的 HTML 頁面上有兩個按鈕。單擊第一個按鈕時,模型中名為“OnPostSubmitBtn()”的函式將啟動,呼叫另一個類 a 對我在文本框中以相同形式收到的輸入進行大量計算,然后將其放入在相同形式的輸出框中。第二個按鈕是清除兩個框。單擊它時,模型中名為“OnPostClearBtn()”的函式將啟動,清除兩個框。
在同一個 HTML 頁面上但在此表單下方,我正在顯示以下資訊。此資訊由模型中的 OnGet() 方法填充。在這個“OnGEt()”方法中,我正在建立與資料庫的連接,獲取資訊并將其添加到串列中。
問題是每次我點擊提交或清除時,下面的內容都沒有了(從資料庫中填充到下表中的內容)。似乎 OnGet 方法只執行一次,每次單擊按鈕時,都會創建一個新實體,但 OnGet 方法沒有觸發,這是正確的..
public class Comments
{
public string name { get; set; }
public string email { get; set; } = "NULL"; // default null
public string comment { get; set; } = "No Comment";
public string createdAt { get; set; }
}
<h2>Comments</h2>
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Comment</th>
<th>Time of creation: </th>
</tr>
</thead>
<tbody>
@foreach(var item in Model.comments){
<tr>
<td>@item.name</td>
<td>@item.comment</td>
<td>@item.createdAt </td>
</tr>
}
</tbody>
</table>
有兩種方法可以解決這個問題,但我相信它們只是四處走走,而不是有人會在專業領域使用的真正解決方案。您可以在兩個 OnSubmit 按鈕中再次呼叫 OnGet() 方法,或者我可以移動我的資料庫連接并將串列從 OnGet 填充到模型的建構式,因為每次都會呼叫它。
我確信有專業的方法可以做到這一點,還是按照我的方式做就足夠了?無論它是否是新實體,每次都會呼叫的等效函式是什么?
uj5u.com熱心網友回復:
OnGet如果您希望在和方法中都可以使用相同的資料OnPost,那么您確定的解決方法是正確的 - 在兩個處理程式中呼叫資料庫。通常,您會在 PageModel 類中撰寫一個私有方法來執行此操作,然后在相關處理程式中呼叫該方法。
我會避免將它放在建構式中,因為 get 和 post 方法通常不需要完全相同的資料。通常,如果模型驗證失敗并且您需要重新顯示表單,您只需要 post 方法中的資料。此外,您將來可能會添加其他根本不需要的處理程式方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/531654.html
標籤:C#html网剃刀页面
上一篇:切換開關需要兩次單擊才能滑動
