如何在 MVC 中的 @Url.Action 中应用动态控制器名称

How to apply dynamic controller name inside @Url.Action in MVC

在我的 DOT NET CORE MVC 应用程序中,我在视图中使用 Url Action 来生成和重定向操作 link

@Url.Action ("Action Name","Controller Name")

上面的 synatax 对我来说工作正常,我正在传递控制器的静态值,比如

'@Url.Action(nameof(EmployeeController.Edit),"Employee")'

这里的控制器名称是静态的,我想避免以后出现这种情况,如果我当时更改了控制器名称,我需要记住视图中的这些更改,所以我的要求基本上是我想像下面这样传递控制器名称

'@Url.Action(nameof(EmployeeController.Edit),nameof(EmployeeController))'

控制器和动作方法是

public class EmployeeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Edit()
        {
            return RedirectToAction("Index", "HotelList", new { area = "Hotel" });
        }
    }

建议我执行此操作的最佳方法

提前致谢

按照惯例,控制器 类 以单词 Controller 结尾,但出于 URL 目的对它们的引用则不然。 (老实说,直到现在我才想到这种差异。)最好不要破坏该约定,因为它可能会引发其他问题。相反,也许只是修改结果中使用的字符串。

像这样:

nameof(EmployeeController).Replace("Controller", string.Empty)

如果它被大量使用,为了简单起见,也许将它封装到某个地方的帮助程序或扩展方法中。