gpt4 book ai didi

c# - 名称为( Controller 名称)的 RedirectToAction 无法定位操作

转载 作者:行者123 更新时间:2023-12-04 00:32:46 25 4
gpt4 key购买 nike

根据内联文档,ControllerBase.RedirectToAction接受操作名称和 Controller 名称:

// Parameters:
// actionName:
// The name of the action.
//
// controllerName:
// The name of the controller.
public virtual RedirectToActionResult RedirectToAction(string actionName, string controllerName);
现在,让我们假设我想重定向到以下操作:
[Route("Whatever")]
public class WhateverController : Controller
{
[HttpGet("Overview")]
public IActionResult Overview()
{
return View();
}
}
当然,我想使用 nameof运算符(operator):
[Route("Home")]
public class HomeController : Controller
{
[HttpGet("Something")]
public IActionResult Something()
{
return RedirectToAction(
nameof(WhateverController.Overview), // action name
nameof(WhateverController) // controller name
);
}
}
但该调用失败并显示错误 InvalidOperationException: No route matches the supplied values.我知道我可以将 Controller 名称硬编码为“任何”,而不是使用 nameof运算符,但是有没有办法从类名中获取正确的名称?

最佳答案

问题是nameof(WhateverController)返回 WhateverController ,不是您和路由系统所期望的(无论如何)。
您可以使用 nameof(WhateverController).Replace("Controller", "")得到你想要的。

编辑:
如果你想要的不是硬编码的 Controller / Action 名称,那么最好使用类似 R4MVC 的东西.

关于c# - 名称为( Controller 名称)的 RedirectToAction 无法定位操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48558148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com