如何在 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)
如果它被大量使用,为了简单起见,也许将它封装到某个地方的帮助程序或扩展方法中。
在我的 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)
如果它被大量使用,为了简单起见,也许将它封装到某个地方的帮助程序或扩展方法中。