如何处理可更新语言及其词汇

时间:2012-12-24 01:43:55

标签: sql-server asp.net-mvc-3

我的项目中有两个用于多语言的数据库表:

Word -ID-      -En-          -Ge-
       1       Hello         Hallo
       2       Yes            Ja

Lang -ID-   -Name-  -FlagFileName- 
       1   English    flag-en.jpg
       2   Deutsch    flag-ge.jpg

但是,我需要能够在系统中添加新语言。我可以向Lang表添加一个新行,向Word表添加一个新列,但是我无法在ASP.NET MVC3项目中更新DBContext对象。我的模型中的数据库对象。

public class Word
{
    public int ID { get; set; }
    public string English { get; set; }
    public string Deutsch { get; set; }
}
public class Language
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string ImageFileName { get; set; }
}

我需要一种定义Word的方法,因为可以添加新语言。如何更新Word对象?这在某种程度上是否可行?

我在处理动态视图时遇到问题:

@{
    Type objectType = Type.GetType(typeof(MyProjectNamespace.Models.Word).AssemblyQualifiedName);
    System.Reflection.PropertyInfo[] fields = objectType.GetProperties();
}

<table>
@foreach (System.Reflection.PropertyInfo f in fields)
{ 
    <th> @f.Name.ToString() </th>
}
@foreach (var item in Model) {
<tr>
    @foreach (System.Reflection.PropertyInfo f in fields)
    { 
      <td>@Html.DisplayFor(modelItem => item.English)</td>
      <td>@Html.DisplayFor(modelItem => item.Deutsch)</td>
      <td>//How can I display for a new Language here?</td>
    }
</tr>
}
</table>

我可以获取Word的每个属性并使用下面的代码将它们打印为Headers,但是如何在这些动态属性中打印值?这可行吗?

我很欣赏任何想法,我甚至准备重新创建表格。

1 个答案:

答案 0 :(得分:0)

我决定变得简单。处理动态Model对象并获取动态属性可能是可行的,但不值得。所以我决定需要一个Word表格,如:

Lang -ID-   -Name-  -FlagFileName- 
       1   English    flag-en.jpg
       2   Deutsch    flag-ge.jpg

Word -ID-    -Text-     -LanguageID-
       1     Hallo          2
       2     Hello          1
       3      Yes           1
       4      Ja            2

因为在添加新语言时,单词不会站在数学索引中,例如:

  --indexed--                    --index broken--
 1-English Word                 1-English Word
 2-German Word                  2-German Word
 3-English Word                 3-Spanish Word
 4-German Word                  4-Dutch Word

计算机无法理解具有%100可靠性的单词的含义,我决定持有一个只有英文单词的含义表:

Meaning -ID-   -Text-
          1    Hello
          2    Yes

将意义与实际的词语联系起来:

Word -ID-    -Text-     -LanguageID-  -MeaningID-
       1     Hallo          2              1
       2     Hello          1              1
       3      Yes           1              2
       4      Ja            2              2

我将WordID分配给新的动态元素,例如“新类型”,它将用于填充某处的下拉框。现在我将它绑定到一个MeaningID。

我猜这个解决方案清晰易懂,易于实施。如果一些明确的解决方案可能会出现在我目前的表格中,我将不会接受我自己的答案一周。