【问题标题】:Property values reset OnPost in Razor Pages属性值在 Razor 页面中重置 OnPost
【发布时间】:2021-06-18 15:20:26
【问题描述】:

我正在尝试为我的 OnPost 方法保留我的属性值。当我从最后一页更改为当前页面时,我在 OnGet 方法中设置了值。这是使用我的属性重定向到页面的按钮的 HTML:

<a class="btn" type="button" asp-page="CreateDate" asp-route-dateString="@Model.model.StartDate.AddDays(i).ToString("yyyy-MM-dd")"><i class="fa fa-plus-square"></i></a>

这是 OnGet 方法:

        [BindProperty]
    public DateTime eventDate { get; set; }

    public void OnGet(string dateString)
    {
        var stringToDate = DateTime.Parse(dateString);
        eventDate = stringToDate;
    }

这是 OnPost:

        public IActionResult OnPost()
    {
        Date date = new Date();
        date.Date1 = eventDate;
        date.Title = Request.Form["Title"];
        date.Description = Request.Form["Description"];

        dateService.AddDate(date, userID);

        return RedirectToPage("Calendar");
    }

最后是 OnPost 方法的 HTML:

<div>
<h5 class="pageTitle">Udfyld formular for at oprette et event for denne dato: @Model.eventDate.ToString("D")</h5>
<form method="post">
    Navn på event:
    <br />
    <input name="Title" type="text" class="form-control input-lg" required autofocus />
    <br />
    Beskrivelse:
    <br />
    <input name="Description" type="text" class="form-control input-lg" required autofocus />
    <br />
    <input type="submit" value="Opret Event" class="btn btn-primary">
</form>

我还是个新手,所以我只是(希望)寻找一个简单的答案。谢谢!

【问题讨论】:

  • I am trying to keep the values of my property for my OnPost method. 这是什么意思?将属性保留在包含OnPost方法的PageModel中?或者使用OnPost方法中的属性将页面重定向到Calendar
  • 您需要阅读的内容在这里docs.microsoft.com/en-us/aspnet/core/fundamentals/… - 在您的情况下,看起来hidden fields 最适合您的要求。但是为了更安全的解决方案,您可以查看其他方法。

标签: c# asp.net-core razor razor-pages model-binding


【解决方案1】:

当您在 OnPost 方法中重定向到日历页面时,您将转到日历页面,因此您可以将属性传递给日历页面并将属性保留在日历页面模型中。

OnPost 方法:

public IActionResult OnPost()
    {
        Date date = new Date();
        date.Date1 = eventDate;
        date.Title = Request.Form["Title"];
        date.Description = Request.Form["Description"];

        dateService.AddDate(date, userID);

        return RedirectToPage("Calendar",date);
    }

日历.cshtml.cs:

public class CalendarModel : PageModel
    {
        [BindProperty]
        public Date date { get; set; }
        public void OnGet(Date Date)
        {
            date = Date;
        }
    }

【讨论】:

    猜你喜欢
    • 2020-07-09
    • 2021-02-02
    • 2022-01-12
    • 2020-10-08
    • 2021-06-05
    • 2020-08-19
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    相关资源
    最近更新 更多