如何在asp.net mvc中处理POCO枚举的本地化 - 最佳实践

时间:2011-04-22 07:03:12

标签: asp.net-mvc localization telerik

让我先说一下我是ASP.NET MVC的新手。我决定使用Telerik的ASP.NET MVC扩展http://www.telerik.com/products/aspnet-mvc.aspx

我想听听您如何处理以下情况的建议。

我有一个名为Print的模型POCO类。

public class Print
{
    public int Id { get; set; }
    public DateTime Date { get; set; }
    public PrintStatus Status { get; set; }

}

我正在传递此类对象的集合以便在Grid上显示它。 该视图如下所示:

...
@{
    var grid = Html.Telerik().Grid(Model)
         .Name("Grid")
         .DataKeys(keys =>
         {
            keys.Add(o => o.Id);
         })
                   .Columns(columns =>
         {
                 columns.Bound(o => o.Date).Title(ModRes.Print.Date);
                 columns.Bound(o => o.Status)).Title(ModRes.Print.Status);
                              })
         .DataBinding(dataBinding =>
         {
             dataBinding.Server().Select("Index", "Print")
             .Insert("Insert", "Print")
             .Update("Save", "Print")
             .Delete("Delete", "Print");
         })
         .Sortable()
         .Pageable()
         .Filterable()
         .Groupable()
         .Footer(true);

 }
@grid
...

相关的一行是:

columns.Bound(o => o.Status)).Title(ModRes.Print.Status);

正如您所看到的,网格将使用Status属性,这是一个枚举。然而,这导致了如何本地化它的问题,即如何显示Status属性的不同翻译。

我的想法是从Print类继承并允许其他字符串属性来保存转换,并且在后台从中创建Print类(我听说Automapper库可能对此有帮助)。然而,这对我来说似乎是一个丑陋的解决方案。

感谢您的投入。

1 个答案:

答案 0 :(得分:1)

创建ResourceManager的实例,并使用打印状态作为资源文件的查找键。或者,如果要在数据库中进行本地化,请对数据库执行相同的操作。如果您需要更具体的密钥,请添加某种类型的前缀。

此链接可能有所帮助:

http://msdn.microsoft.com/en-us/library/c6zyy3s9.aspx