簡體   English   中英

在剃須刀頁面之間傳遞模型數據

[英]pass model data between razor pages

我嘗試在兩個 Razor 頁面之間傳遞模型數據,數據不是我想要傳遞到第二頁的字符串或布爾值或 int 數據是模型,我這樣做是這樣的,

public class AskLibrarian
{
    public int Id { get; set; }
    public string FullName { get; set; }
    public string Subject { get; set; }
    public string Email { get; set; }
    public string Text { get; set; }
    public string UserIp { get; set; }
    public DateTime CreateDate { get; set; }
    public bool ReadIt { get; set; }
    public bool Answer { get; set; }
    public string reciptCode { get; set; }
}

並在Get 方法上以這種方式傳遞數據:

 [BindProperty]
    public AskLibrarian AskLibrarian { get; set; }

    public async Task<IActionResult> OnPostQuestionAsync()
    {
        if (!ModelState.IsValid)
        {
            return Page();
        }
        AskLibrarian.Answer = false;
        AskLibrarian.CreateDate = DateTime.Now;
        AskLibrarian.ReadIt = false;
        string userIp = $"{ HttpContext.Connection.RemoteIpAddress}";
        if (string.IsNullOrEmpty(userIp))
        {
            userIp = "127.0.0.1";
        }


        AskLibrarian.UserIp = userIp;
        string rndNuber = Business.RandomNumberForQuestion.randCode;
        AskLibrarian.reciptCode = rndNuber;

        await _emailSenderService.SendEmailAsync(AskLibrarian.Email, AskLibrarian.FullName, rndNuber);
        _context.AskLibrarians.Add(AskLibrarian);
        await _context.SaveChangesAsync();
        Message = "your message sended";

        //return RedirectToPage("/Subfolder/Index", new { SFId = 7 });
        return RedirectToPage("/Subfolder/AskLibrarianCode", new { asklib = AskLibrarian });
    }

在第二頁的 post方法中,喜歡通過這種方式獲取數據:

public void OnGet(Model.AskLibrarian asklib)
    {
        askLibrarianVM = new AskLibrarianVM
        {
            Answered = false,
            CreateDate = asklib.CreateDate,
            LastUpdate = asklib.CreateDate,
            RandomeCode = asklib.reciptCode,
            Status = false,

        };
    }

但是asklib是空的,我在Get 方法的末尾設置了一個斷點,如果用有效值填充了asklib ,但在post 方法中,當我嘗試獲取數據時,asklib 是的,我的錯誤是什么

最低限度的摩擦方式是return View("SomeViewForTheModel", AskLibrarian)並使用完全不同的視圖來做你的事情。 您的第二頁控制器操作確實沒有做任何事情。

否則,您必須將與您的AskLibrarian對象關聯的 ID 保存在數據庫中,然后通過將 ID 放在 URL 路徑中來在第二頁上查找它(確保驗證用戶應該看到它! ),或者通過在數據庫中查找用戶擁有的任何內容。

簡單的答案是:

  return RedirectToPage("/Subfolder/AskLibrarianCode", AskLibrarian );

我的錯誤是

... new{asklib = AskLibrarian});

兩個多小時后

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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