2

こんにちは私はいくつかの解決策を探していましたが、何も見つかりませんでした...

ActionNameAttributeでリソースを使用する方法はありますか?

たとえば、プロパティにDisplayNameAttributeを使用すると、次のように使用できます。

    [Display(Name = "labelForName", ResourceType = typeof(Resources.Resources))] 
    public string name{ get; set; }  

しかし、アクションメソッドにリソースを使用する方法がわかりません...

ありがとう

4

1 に答える 1

3

このタスクを実行するためのカスタム属性を作成できます。

[AttributeUsage(AttributeTargets.Method, AllowMultiple=false, Inherited=true)]
public sealed class LocalizedActionNameAttribute : ActionNameSelectorAttribute
{
    public LocalizedActionNameAttribute(string name, Type resourceType)
    {
        Name = name;
        ResourceType = resourceType;
    }

    public Type ResourceType { get; private set; }
    public string Name { get; private set; }

    public override bool IsValidName(ControllerContext controllerContext, string actionName, System.Reflection.MethodInfo methodInfo)
    {
        var rm = new ResourceManager(ResourceType);
        var name = rm.GetString(Name);
        return string.Equals(actionName, name, StringComparison.OrdinalIgnoreCase);
    }
}

その後:

[LocalizedActionName("Index", typeof(Resources.Resources))]
public ActionResult Index()
{
    return View();
}
于 2012-06-14T17:42:17.587 に答える