不是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
答案 0 :(得分:1)
该参数需要一个对象,特别是路由值的匿名对象;它不知道如何处理int。
return RedirectToPage("./Index", new { id = TScores.ElementId });