您好我一直在寻找一些解决方案,但我什么都没发现......
有没有办法将资源与ActionNameAttribute一起使用?
例如,在属性中使用DisplayNameAttribute我们可以诉诸:
[Display(Name = "labelForName", ResourceType = typeof(Resources.Resources))]
public string name{ get; set; }
但我不知道如何将资源用于我的行动方法......
Thanks¡
答案 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();
}