【问题标题】:Passed value is not preserved不保留传递的值
【发布时间】:2019-07-01 22:58:48
【问题描述】:

不是 MVC!

大家好,

我在这里做错了什么......

我试图将一个整数值从 Razor 页面(Scores/Create.cshtml)的 onPost 方法传递到另一个页面(/Scores/Index.cshtml)的 onGet 方法,但是该值没有被保留,我要么根据我发送整数的方式,在 onGet 方法中检查 id 值时获取 null 或 0。

我知道这可以使用路由,因为我在另一个页面上这样做

<a asp-page="/Scores/Index" asp-route-id="@item.ElementId">Update scores</a> 

我尝试从如下代码示例中的实体属性传递值,从 ViewData 变量传递值,也从本地创建的整数传递值,最后只是传递一个整数值本身。在所有情况下,OnPost 中的值都是正确的,但永远不会到达 onGet。

邮报

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

        _context.TScores.Add(TScores);
        await _context.SaveChangesAsync();

        return RedirectToPage("./Index","OnGet",TScores.ElementId);
    }

OnGet

    public async Task OnGetAsync(int? id)
    {  
            TElements telement = new TElements();

            telement =  _context.TElements.Where(a => a.ElementId == id).FirstOrDefault();

我也试过没有在RedirecttoPage中设置OnGet方法名

我希望在 onGet 中获取 id 的值以匹配从 onPost 传递的 TScores.ElementID。

提前致谢

D

【问题讨论】:

    标签: asp.net-core parameter-passing razor-pages


    【解决方案1】:

    参数需要一个对象,具体是路由值的匿名对象;它不知道如何处理 int。

    return RedirectToPage("./Index", new { id = TScores.ElementId });
    

    【讨论】:

      猜你喜欢
      • 2021-06-03
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      • 1970-01-01
      • 2023-02-05
      • 1970-01-01
      相关资源
      最近更新 更多