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

发布于 2024-11-02 20:09:20 字数 1557 浏览 1 评论 0原文

首先我要说的是我对 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; }

}

我正在传递此类的对象集合来查看,以便将其显示在网格上。 该视图如下所示:

...
@{
    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 库可能对此有所帮助)。然而,这对我来说似乎是一个丑陋的解决方案。

感谢您的意见。

Let me preface this by saying I'm fairly new to ASP.NET MVC. I've decided to use Telerik's ASP.NET MVC extensions http://www.telerik.com/products/aspnet-mvc.aspx

I would like to hear from you a recommendation how to handle the following situation.

I have a model POCO class called Print.

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

}

I'm passing collection of objects of this class to view in order to show it on the Grid.
The view looks as follows:

...
@{
    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
...

The relevant line is this:

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

As you can see the grid is going to use Status property, which is an enumeration. However this leads to a question on how to localize it i.e. How to show different translations of the Status property.

My thought is to inherit from Print class and allow additional string property which would hold the tranlation and alow to create Print class from it in the background (I heard that Automapper library might be helpful with this). This, however, seems like an ugly solution for me.

Thank you for your input.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

溺孤伤于心 2024-11-09 20:09:20

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

此链接可能有帮助:

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

Create an instance of a ResourceManager and use the print status as a lookup key to a resource file. Or if you are localizing in a database do the same thing to the DB. If you need it to be more specific of a key then add a prefix of some sort.

This link might help:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文