1

プロジェクトに多言語対応のデータベーステーブルが2つあります。

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.NETMVC3プロジェクトのDBContextオブジェクトを更新できません。モデル内のDBオブジェクト。

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

シンプルにすることにしました。動的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

次のような新しい言語が追加されると、Wordsは数学的なインデックスに表示されなくなります。

  --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にバインドします。

このソリューションは明確で、理解しやすく、簡単に実装できると思います。いくつかの明確な解決策が私の現在のテーブルに提示される可能性がある場合に備えて、私は1週間自分の答えを受け入れません。

于 2012-12-24T03:42:54.433 に答える