1

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

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 的每个属性并将它们打印为标题,但是如何打印这些动态属性中的值?这是可行的吗?

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

4

1 回答 1

0

我决定简单点。处理动态模型对象并获取它们的动态属性可能是可行的,但不值得。所以我决定我需要一个 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。

我猜这个解决方案是清晰、易于理解且易于实施的。一周内我不会接受我自己的答案,以防我当前的表格可能会出现一些明确的解决方案。

于 2012-12-24T03:42:54.433 回答