1

「必須」、「オプション」、「非表示」などの定数値があります。これをドロップダウンリストにバインドしたい。これまでのところ、私が行ったことは以下のコードです。これはビューでコード化されています。定数値をドロップダウンリストにバインドする最良の方法は何ですか? これをコントローラーに実装し、ビューで呼び出したいと思います。

@{
    var dropdownList = new List<KeyValuePair<int, string>> { new KeyValuePair<int, string>(0, "Required"), new KeyValuePair<int, string>(1, "Optional"), new KeyValuePair<int, string>(2, "Hidden") };
    var selectList = new SelectList(dropdownList, "key", "value", 0); 

} 

ドロップダウンリストでselectListをバインドします

@Html.DropDownListFor(model => model.EM_ReqTitle, selectList)
4

2 に答える 2

1

プロパティから判断するEM_RegTitleと、使用しているモデルは何らかの方法でデータベースから自動生成されていると思います。多分エンティティフレームワーク?この場合、ORM/Entity Framework エンティティと同じ名前空間に部分クラスを作成し、追加のプロパティを追加できるはずです。何かのようなもの:

public partial class MyModel
{
    public SelectList MyConstantValues { get; set; }
}

SelectListその後、モデルの残りの部分で を渡すことができます。

通常、MVC アプリのすべてのレイヤーで ORM/EF エンティティを使用するとハングアップします。オンラインのコード例では簡単に見えますが、独自のビュー モデル クラスを作成し、AutoMapper などを使用してこれらのビューを埋めることをお勧めします。このようにして、ビューが必要とするデータのみを渡し、ユーザーに表示または変更させたくない他の機密情報を含む可能性のある DB 行を渡すことを回避します。

また、静的な値の選択リストを生成するロジックをドメイン モデルまたはサービス クラスに移動して、コードの量を減らし、コントローラー内の煩雑さを維持することもできます。

これが何らかの形で役立つことを願っています!

例...

ビューモデル(これを「モデル」ディレクトリに入れます):

public class MyViewModel
{
    public SelectList RegTitleSelectList { get; set; }

    public int RegTitle { get; set; }
}

あなたのコントローラー(「コントローラー」ディレクトリに入ります):

public class SimpleController : Controller
{
    MyViewModel model = new MyViewModel();

    model.RegTitle = myEfModelLoadedFromTheDb.EM_RegTitle;
    model.RegTitleSelectList = // Code goes here to populate the select list.

    return View(model);
}

エディターでクラス名を右クリックし、SimpleController[ビューの追加...] を選択します。

新しいビューを作成し、強く型付けされたものにチェックマークを付けMyViewModelて、モデル クラスとしてクラスを選択します。

ビューを編集して、以前のコードで行っていたことと同様のことを行います。@modelビューの上部に線があるはずです。これは、ビューが厳密に型指定されたビューであり、MyViewModelモデルを使用していることを示しています。

行き詰まった場合は、MVC と厳密に型指定されたビューの基本を理解するためのオンラインの例がたくさんあります。

于 2012-05-17T07:52:42.707 に答える
0

モデルを表示して、コントローラーにデータを入力することをお勧めします。

class MyViewModel
{
    public string ReqTitle { get; set; }
    public SelectList SelectListItems { get; set; }
}

次に、次を使用できます。

@Html.DropDownListFor(model => model.EM_ReqTitle, model.SelectListItems) 
于 2012-05-17T07:54:56.953 に答える