[英]Razorpages Post new record and return to page with updated Id
使用 Net6.0 Razorpages,我有一個按 Id 返回一個人的表單,並允許用戶更新記錄或添加一個新的 Person OnPost。
發布新記錄時,我希望它返回同一頁面並顯示更新后的 Id,但它仍然為 0。
public class Person
{
public int PersonId { get; set; }
public string Name { get; set; }
public string FavouriteDoughnut { get; set; }
}
表格:
@page "{personId:int}"
@model Pages.EditModel
<form method="post">
<label asp-for="Person.PersonId">Id</label>
<input asp-for="Person.PersonId" readonly>
<label asp-for="Person.Name">Name</label>
<input asp-for="Person.Name">
<label asp-for="Person.FavouriteDoughnut">Doughnut?</label>
<input asp-for="Person.FavouriteDoughnut">
<button type="submit>Save</button>
</form>
[BindProperty(SupportsGet=true)]
public Person Person { get; set; }
public async void OnGet(int personId)
{
if(personId > 0)
{
Person = await _dbContext.People.FindAsync(personId);
return;
}
Person = new Person();
}
public void OnPost()
{
Person = UpdatePerson(Person);
}
private void UpdatePerson(Person person)
{
_dbContext.People.Update(person);
await _dbContext.SaveChanges();
return person;
}
我需要重定向到編輯頁面嗎? 當我檢查 Person OnPost 時,我可以看到它已更新並且頁面刷新,只是沒有填充新 ID。
檢查你的PrimaryKey
設計, PersonId
是數據庫中的主鍵,當用戶發布新記錄時, PersonId
的值是自增的,而不是依賴於新記錄中PersonId
的值。 當用戶要發布一條新記錄時, PersonId
的輸入框會自動鎖定,不允許用戶輸入任何內容,所以頁面不會接收到PersonId
的值,頁面刷新后,不會顯示 PersonId 的真實值PersonId
。
在我看來,向用戶顯示主鍵是沒有必要的,但如果你想這樣做,你可以通過PersonId
查詢並在添加新記錄后將結果返回到頁面,或者只是RedirectToPage("/Edit", new{ personId = Person.Id }
,我推薦你使用第二種方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.