0

[ビューの追加]ダイアログでビューを生成するときに、EntityFrameworkの外部キーを取得するにはどうすればよいですか。

私のモデルは

public class System
{
    #region Properties

    public int SystemId { get; set; }
    public string SystemName { get; set; }

    #endregion
}

public class Module
{
    #region Properties

    public int ModuleId { get; set; }

    //[Required]
    [Display(Name="Module Name")]
    public string ModuleName { get; set; }

    [Display(Name="Date Added")]
    public DateTime DateAdded { get; set; }

    //[ForeignKey("CurrentSystem")]

    public int SystemId { get; set; }

    //[ForeignKey()]
    //[ForeignKey("SystemId")]
    public System System { get; set; }

    #endregion
}

コントローラをクリックしてからビューを追加をクリックすると、モーダルが開きます。必要なすべての詳細を選択すると、以下が生成されます(ビュー全体を含めませんでした)。

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
    <legend>Module</legend>

    <div class="editor-label">
        @Html.LabelFor(model => model.ModuleName)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.ModuleName)
        @Html.ValidationMessageFor(model => model.ModuleName)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.DateAdded)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.DateAdded)
        @Html.ValidationMessageFor(model => model.DateAdded)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.SystemId)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.SystemId)
        @Html.ValidationMessageFor(model => model.SystemId)
    </div>

    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>
}

SystemIdをテキストフィールドではなくドロップダウンにしたい。どうすればこれを行うことができますか?

4

2 に答える 2

1

ビューモデルを使用します。MVCは、データアノテーションを使用して、プロパティの表示方法を理解します。ビューをモデルとは異なる方法で動作させたい場合は、モデルをビューモデルにマップして、追加のロジック(つまり、intが存在する場所のドロップダウン)を処理する必要があります。次に、view-modelクラスからビューを生成します。

ビューモデルは、ここで懸念事項の分離に対処するためのレイヤーを追加します。ビューをモデルで許可されているものとは異なるものにしたいので、モデルデータを取得して希望する方法で表示するビューモデルクラスを追加します。

于 2012-06-25T16:18:52.593 に答える
1

DBSet<System>タイプのプロパティとタイプのプロパティを持つdbContextから派生したクラスを作成しましたDBSet<module>か?持っていて、「エンティティフレームワークを使用したアクションの読み取りと書き込み」オプションでコントローラーを選択し、その下のドロップダウンでクラスモジュールとコンテキストの両方を選択すると、MVCは表示する正しいコードビューとコントローラーコードを生成する必要がありますシステムのコンボ。

少なくともMVC4ではうまくいきました。コントローラを追加する前に、プロジェクトを生成することを忘れないでください。MVcはリフレクションを使用しているので、最新のアセンブリが必要だと思います...

于 2012-06-25T18:02:50.073 に答える