ASP.NET Core MVC控制器带ID重定向报错:需新增路由吗?
问题分析与解决方案
你当前的代码陷入了无限重定向循环,这是页面报错的核心原因:不管请求是否携带id参数,Privacy Action都会无条件重定向到带id=1234的同一个Action,新请求又会触发相同的重定向逻辑,浏览器因重定向次数过多报错。
不需要新增MapControllerRoute,你的默认路由配置已经支持{controller}/{action}/{id?}的格式,完全匹配Home/Privacy/1234这种URL。只需要修改Privacy Action的逻辑,区分首次请求(无id)和已带id的请求:
public IActionResult Privacy(string? id) { // 如果没有传入id,重定向到带id=1234的Privacy页面 if (string.IsNullOrEmpty(id)) { return RedirectToAction("Privacy", "Home", new { id = "1234"}); } // 已经有id参数,直接返回视图 return View(); }
默认路由中的{id?}表示该参数为可选,当访问Home/Privacy/1234时,路由系统会自动把1234绑定到Action的id参数上,此时不会触发重定向,直接返回视图即可正常显示页面。
内容的提问来源于stack exchange,提问作者jujy7
相关产品推荐
相关产品推荐

