3

mvc3を使用しています。コントローラーとアクションに表示名を付けることは可能ですか。

[DisplayName("Facebook Employee")]
public class EmployeeController : Controller

ブレッドクラムで、コントローラー名とアクション名を取得します

@{
var controllerName = ViewContext.RouteData.Values["Controller"];
var actionName = ViewContext.RouteData.Values["Action"];
}

「Facebook Employee」が表示されることを期待していますが、機能していません。

4

2 に答える 2

5

を使用して、コントローラーの型自体を検討する必要がありますGetCustomAttributesViewContext.Controllerコントローラー自体への参照を取得するために使用します。このようなもの:

string controllerName;
Type type = ViewContext.Controller.GetType();
var atts = type.GetCustomAttributes(typeof(DisplayNameAttribute), false);
if (atts.Length > 0)
    controllerName = ((DisplayNameAttribute)atts[0]).DisplayName;
else 
    controllerName = type.Name;   // fallback to the type name of the controller

編集

アクションに対して同様のことを行うには、最初に次を使用してメソッドを反映する必要がありますType.GetMethodInfo

string actionName = ViewContext.RouteData.Values["Action"]
MethodInfo method = type.GetMethod(actionName);
var atts = method.GetCustomAttributes(typeof(DisplayNameAttribute), false);
// etc, same as above
于 2013-10-16T19:57:24.277 に答える