mvc - ActionNameAttribute从资源获取?

时间:2012-06-14 17:29:03

标签: asp.net-mvc-3 resources attributes

您好我一直在寻找一些解决方案,但我什么都没发现......

有没有办法将资源与ActionNameAttribute一起使用?

例如,在属性中使用DisplayNameAttribute我们可以诉诸:

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

但我不知道如何将资源用于我的行动方法......

Thanks¡

1 个答案:

答案 0 :(得分: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();
}