-1

MVC 4、LINQ to SQL、およびRazor構文を使用してC#アプリケーションを作成しています。

要求されたIDに基づいてデータベース内の特定の行の内容を取得するクラスを作成しました。

getハンドラーとpostハンドラーを備えたコントローラーを作成しました。モデルクラスの1つに基づいて強い型のビューを作成しましたが、すべてがうまく機能しています。データが取得され、フォームに表示されます。データを更新して送信できます。

問題はドロップダウンです。IDのテキストフィールドを表示したくありません。ドロップダウンが欲しいです。約5つのドロップダウンがあり、すべてデータベースから生成されます。モデルを作成して作成しました。

ViewDataまたはViewBagを使用して、問題なくドロップダウンを渡すことができます。しかし、ユーザーがページをロードするときに、選択したオプションを選択するにはどうすればよいですか?

4

2 に答える 2

2

MVCの「モデル」は、データではなく、ページをモデル化することになっています。List<T>ページにドロップダウンがある場合は、選択を表す別のプロパティとともに、モデルにある種のコレクション(おそらくは)が必要です。このプロパティは、ドロップダウンの初期値を入力するため、および選択した値をコントローラーに送り返すために使用されます。

于 2013-02-04T17:27:56.400 に答える
1

ViewModelを優先して、ViewDataまたはViewBagを回避することをお勧めします。

ViewModelは基本的に、Viewが必要とするすべてのデータを単一のエンティティに集約するハイブリッドモデルです。ビューをモデルに入力して、ViewDataまたはViewBagのモデルにないビューに必要な追加情報を渡すのではなく、ビューが入力されたモデルに必要なすべてのものがあります。

あなたの場合、ViewModelは次のようになります。

public class MyViewModel
{
    public DropDown1 DropDownA { get; set; }
    public DropDown2 DropDownB { get; set; }
    public Model ModelData { get; set; }
}

public class DropDown1
{
    public int SelectedValue { get; set; }
    public List<T> DropDownValues { get; set; }
}

public class DropDown2
{ 
    public int SelectedValue { get; set; }
    public List<T> DropDownValues { get; set; }
}

ビューはに入力されMyViewModelます。この時点で、ドロップダウンのデータソースをViewModelのドロップダウンに設定し、SelectedValueを設定するのは簡単です。

于 2013-02-04T17:54:38.397 に答える