传递的值不保留

时间:2019-02-07 18:24:59

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

不是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。

OnPost

    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

1 个答案:

答案 0 :(得分:1)

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

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