45

おすすめの新しい使い方はありますか

nameof()

コントローラー名のASP.NET MVCの式?

Url.Action("ActionName", "Home")  <------ works

Url.Action(nameof(ActionName), nameof(HomeController)) <----- doesn't work

nameof(HomeController)が"HomeController"に変換され、MVC が必要とするのは"Home"だけであるため、明らかに機能しません。

4

8 に答える 8

9

拡張メソッドを考えてみましょう:

public static string UrlName(this Type controller)
{
  var name = controller.Name;
  return name.EndsWith("Controller") ? name.Substring(0, name.Length - 10) : name;
}

次に、次を使用できます。

Url.Action(nameof(ActionName), typeof(HomeController).UrlName())
于 2014-12-12T17:06:15.227 に答える