第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么值不保留在回傳上?

為什么值不保留在回傳上?

C#
斯蒂芬大帝 2022-12-24 14:30:12
我的主頁有一個產(chǎn)品選項列表,每個選項在注冊時為用戶提供不同的帳戶級別。每個選項都顯示一個“注冊”按鈕,將用戶帶到/Identity/Account/Register頁面進行注冊。我需要向注冊頁面?zhèn)鬟_用戶選擇的選項。我不能使用 Sessions,因為它顯然被拿走了我不能使用 Cookies 因為它顯然已經(jīng)被拿走了當我提交表單時,ViewData 值不會保留當我提交表單時,查詢字符串值不會保留當我提交表單時,全局變量值不會保留最初加載頁面時,我無法設(shè)置視圖模型的屬性(NullReferenceException)當注冊頁面加載時,該值就在那里,但是當我提交表單時,它就消失了。我不知所措。我打算通過什么機制來獲得這些必需的信息?在大多數(shù)情況下,我的代碼幾乎只是標準的樣板文件:[AllowAnonymous]public class RegisterModel : PageModel{    private readonly SignInManager<ApplicationUser> _signInManager;    private readonly UserManager<ApplicationUser> _userManager;    private readonly ILogger<RegisterModel> _logger;    private readonly IEmailSender _emailSender;    public RegisterModel(        UserManager<ApplicationUser> userManager,        SignInManager<ApplicationUser> signInManager,        ILogger<RegisterModel> logger,        IEmailSender emailSender)    {        _userManager = userManager;        _signInManager = signInManager ?? throw new ArgumentNullException(nameof(signInManager));        _logger = logger;        _emailSender = emailSender;    }    [BindProperty]    public InputModel Input { get; set; }    [BindProperty]    public int AccountLevel { get; set; }    public string ReturnUrl { get; set; }    public void OnGet(string returnUrl = null, int acclevel = 1)    {        AccountLevel = acclevel;        ReturnUrl = returnUrl;    }    public async Task<IActionResult> OnPostAsync(string returnUrl = null, int acclevel = 0)    {        returnUrl = returnUrl ?? Url.Content("~/");        if (ModelState.IsValid)        {            if (acclevel == 0) throw new ArgumentException(nameof(acclevel));            Input.LicenseCount = acclevel * 10;            var user = new ApplicationUser { UserName = Input.Email, Email = Input.Email, Name = Input.FirstName, Surname = Input.Surname, PhoneNumber = Input.PhoneNumber, SaIdNumber = Input.IdNumber, LicensesCount = Input.LicenseCount };
查看完整描述

2 回答

?
MM們

TA貢獻1886條經(jīng)驗 獲得超2個贊

注意:我不使用 Razor Pages,所以了解該技術(shù)的人可能會有更好的答案。


您可以在表單中使用隱藏字段來保留 POST-back 中的值:


<form asp-route-returnUrl="@Model.ReturnUrl" method="post">

    @Html.HiddenFor(model => model.AccountLevel)

    @*OR, TagHelper way*@

    <input asp-for="AccountLevel" type="hidden"/>

    <h4>Create a new account.</h4>

    ....

</form>

啟用會話后,使用會話也很容易做到這一點:


public void OnGet(string returnUrl = null, int acclevel = 1)

{

    HttpContext.Session.SetInt32("AccountLevel", acclevel);

    ReturnUrl = returnUrl;

}


public async Task<IActionResult> OnPostAsync(string returnUrl = null)

{

    int accountLevel = HttpContext.Session.GetInt32("AccountLevel");

    ...

}


查看完整回答
反對 回復 2022-12-24
?
HUH函數(shù)

TA貢獻1836條經(jīng)驗 獲得超4個贊

請求后唯一存在的數(shù)據(jù)是與該請求一起發(fā)送的數(shù)據(jù)。即使在會話的情況下,關(guān)鍵會話標識符也必須由客戶端在請求中傳輸?shù)椒掌饕曰謴驮摃挕?/p>

您從數(shù)據(jù)庫中檢索到的任何數(shù)據(jù)都必須重新發(fā)布或查詢。此外,不應發(fā)布不允許用戶明確更改的數(shù)據(jù)。因此,大多數(shù)數(shù)據(jù)應該重新查詢。

至于用戶選擇的選項,當然應該發(fā)布。但是,應該通過再次查詢該數(shù)據(jù)庫來獲取所選計劃和其他計劃選項的實際詳細信息。這將是必要的,例如,如果由于驗證錯誤而需要在發(fā)布后重新顯示表單。


查看完整回答
反對 回復 2022-12-24
  • 2 回答
  • 0 關(guān)注
  • 129 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號