【发布时间】:2018-08-20 19:34:57
【问题描述】:
通过在 C# 6 中引入 nameof 运算符,您可以通过编程方式获取操作名称,而无需使用魔法字符串:
<p>@Html.ActionLink("Contact", nameof(HomeController.Contact), "Home")</p>
如果您不更改视图的名称,这将非常有用。
但是,如果操作方法使用[ActionName] 属性,有没有办法获得正确的操作名称(并避免使用魔术字符串)?或许通过nameof() 和扩展方法的结合?
[ActionName("Contact2")]
public ActionResult Contact()
{
// ...
}
在本例中,nameof(HomeController.Contact) 将返回字符串“Contact”和 URL “http://localhost:2222/Home/Contact”,而正确的 URL 应该是“http://localhost:2222/Home/Contact2”,因为 [ActionName("Contact2")] 属性。
【问题讨论】:
-
您可能需要调整您的问题。无论如何都不能使用
nameof()来执行此操作。你可能只想问“怎么做”,而不是“怎么用nameof()” -
@maccettura 很好的建议,谢谢。我已经更新了问题。
-
如果你理解how nameof works,那么你就会明白为什么它在这里不起作用。
-
请问您的用例是什么?
-
ControllerContext.ActionDescriptor.ActionName也许这有帮助?
标签: c# asp.net-core controller asp.net-core-mvc