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

时间:2019-05-28 13:27:26

标签: c# asp.net-mvc .net-core url.action

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

  

@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" });
        }
    }

建议我这样做的最佳方法

预先感谢

1 个答案:

答案 0 :(得分:1)

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

类似这样的东西:

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

如果经常使用它,也许为了简单起见,将其封装到一个辅助方法或扩展方法中。