这个问题可能是因为 Razor 页面路由处理导致的,在这种情况下,我们可以在路由模板字符串中指定参数名称,这将确保 Framework 不会重复使用之前的路由数据。
示例代码:
在 Startup.cs 中添加以下代码,指定路由参数名称:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "routeWithParam",
template: "MyController/MyAction/{myParam}",
defaults: new { controller = "MyController", action = "MyAction" });
});
然后,在 MyAction() 方法中使用以下代码访问参数:
public IActionResult MyAction(string myParam)
{
ViewData["MyParam"] = myParam;
return View();
}
这样将确保参数与模板字符串匹配,并且不会重用之前的路由数据。