edit:项目背景。该项目是根据此处有关使用剃须刀页面https://docs.microsoft.com/en-us/aspnet/core/data/ef-rp/?view=aspnetcore-2.2进行数据访问的教程中的概念创建的。我没有执行视图或控制器,因此我目前没有任何可重定向到的操作。我需要添加一个控制器文件夹吗?
当我保存对模型subcategories
的编辑更改时,我想回到categories
页面。通常,使用简单的RedirectToPage("/index")
就可以了。
这在这里不起作用,因为我的索引OnGet
使用字符串ID来过滤subcategories
(这似乎是我做错了……但它可以工作)。以下是我目前拥有的东西,它显然不起作用:
编辑-在岗:
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
_context.Attach(Subcategory).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!SubcategoryExists(Subcategory.SubcategoryId))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToPage("./Index", "?id" , Subcategory.CategoryName);
}
索引- OnGet:
public async Task OnGetAsync(string id)
{
title = id;
Subcategory = await _context.Subcategory.ToListAsync();
foreach (Subcategory item in Subcategory.ToList())
{
if (item.CategoryName != id)
{
Subcategory.Remove(item);
}
}
}
谁能告诉我如何正确地将我的编辑剃刀页面的OnPost
路由到索引剃刀页面的OnGet
?
我尝试对处理程序进行一些研究,但是我找不到如何执行此操作的很好的定义。
答案 0 :(得分:3)
由于只提供了方法,所以很难看到您在哪里挂了东西。
鉴于OnGetAsync(string id)
如果映射到/index
,则可以使用以下方式:
return RedirectToAction("Index", new { id = Subcategory.CategoryName.ToString() });
我还建议您将方法调用为与端点相同。因此,如果OnGetAsync
是您的索引端点。然后将其命名为Index
。
希望这对您有所帮助,否则您需要向我提供更多代码。
答案 1 :(得分:0)
无需构建控制器即可解决问题的方法几乎就是克里斯蒂安·巴内(Kristian Barrnet)所说的:
return RedirectToPage("./Index", new { id = Subcategory.CategoryName.ToString() });
但是,无论如何,我可能应该在这里添加一些控制器,以使它更有条理