You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Razor页面传递数据后,如何在第二个页面OnGet阶段显示数据?

问题解决方案

1. 修正Index页面的参数传递逻辑

原RedirectToPage中指定的路由名称"User"属于冗余配置,且需确保参数命名与Add页面接收方对应,修改如下:

// Index页面的OnPost方法
public IActionResult OnPost()
{
    if (!ModelState.IsValid)
    {
        return Page();
    }

    // 直接传递参数,参数名与Add页面属性匹配
    return RedirectToPage("Add", new { Initials = User.Initials, EntryDate = User.EntryDate });
}

2. 调整Add页面的PageModel逻辑

移除不必要的[ViewData]属性(BindProperty已满足绑定需求),添加SupportsGet = true配置让属性能从GET请求参数中绑定值,优化后代码:

public class AddModel : PageModel
{
    [BindProperty(SupportsGet = true)] // 允许从GET请求绑定参数
    public DateTime EntryDate { get; set; }
    [BindProperty(SupportsGet = true)]
    public string Initials { get; set; }
    [BindProperty]
    public ItemModel Item { get; set; }
    [BindProperty]
    public UserModel User { get; set; }

    // 参数已通过BindProperty自动绑定,无需手动接收UserModel
    public void OnGet()
    {
        // 可保留必要初始化逻辑
    }

    public async Task<IActionResult> OnPost()
    {
        if (!ModelState.IsValid)
        {
            return Page();
        }

        Initials = User.Initials;
        EntryDate = User.EntryDate;

        ItemModel item = new ItemModel();
        item.UserId = Initials;
        item.TransferDate = EntryDate;
        item.ItemNumber = Item.ItemNumber;
        item.FromLocation = Item.FromLocation;
        item.ToLocation = Item.ToLocation;
        item.Quantity = Item.Quantity;

        await item.InsertAsync();
        return Page();
    }
}

3. 修正Add页面的HTML绑定

原HTML绑定的是嵌套User对象的属性,但OnGet阶段该对象未被赋值,需改为绑定PageModel自身的公开属性:

<div class="row">
    <div class="col-md-4">
       Initials: @Html.DisplayFor(model => model.Initials)
       <br />
       Entry Date: @Html.DisplayFor(model => model.EntryDate)
    </div>
</div>

核心说明

  • [BindProperty(SupportsGet = true)]:是OnGet阶段能从URL参数中获取值的关键配置,默认BindProperty仅支持POST请求绑定。
  • HTML绑定目标:必须指向PageModel直接暴露的属性,而非未初始化的嵌套对象。

内容的提问来源于stack exchange,提问作者Buck Hicks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:10:26