簡體   English   中英

Razorpages 發布新記錄並返回具有更新 Id 的頁面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM