0

質問はすでに出されているかもしれませんが、私が見つけた答えは明確ではありません。

ドロップダウン リストのデフォルト値を選択したいと思います。国のリストがあり、Thread.CurrentThread.CurrentCulture を介して取得した地域コードに基づいて、ユーザーの国を選択したいと思います。

私のアプローチで可能ですか:

意見

@model Question
@Html.DropDownListFor(b => b.SelectedAnswer,new SelectList(Model.Answers,"ID","Country"))

モデル

 public class Question
    {

        public int ID { get; set; }
        public string Country { get; set; }

        public List<Answer> Answers { get; set; }
        [Required]
        public int SelectedAnswer { get; set; }
        public int Order { get; set; }

        public Question()
        {
            Answers = new List<Answer>();
        }
    }

ありがとうございました。

4

2 に答える 2

1

これをコメントとして追加するつもりでしたが、長さが長すぎます。この方法でお役に立てれば、これを回答として受け入れることができます。

これは、これを実装するために使用する方法です。

まず、ビューモデル内に次のものがあります

public int FooID { get; set; }
public IEnumerable<SelectListItem> FooList { get; set; }

FooID は、デフォルト値 (または現在選択されている) であり、投稿結果を収集するために使用されるプロパティでもあります。

各項目に次の形式を使用して、List の型を返す FooList を作成する関数があります。

new SelectListItem { Text = i.Name, Value = i.FooID.ToString() };

ビューモデルを出力する前に、現在の値が FooID に挿入されます。または、これが新しいアイテムの場合は、通常、値をデフォルト値の 1 に設定します。

次に、出力について。

@Html.DropDownListFor(m => m.FooID, Model.FooList)

FooID は文字列として渡されるため、文字列 FooID パラメーターとして収集し、Int に変換する必要があることに注意してください。ビューモデルがコントローラーからビューに渡される前に FooID が設定されている限り、値が FooID に等しい FooList 内の項目がデフォルトとして設定されます...など。

public ActionResult MyAction()
    {
        MyVM vm = new MyVM();
        vm.FooID = 1;
        vm.FooList = FunctionToGenerateFooList();

        return View(vm);
    }
于 2013-03-02T15:24:01.283 に答える
0

本当に、SelectListItem を保持するリストとしてドロップダウン リストを渡す必要があります。次に、国ごとに、テキストを国コードとして使用し、値内の ID を割り当てます。次に、モデルを初期化するときにカルチャを収集し、リスト内のどのアイテムが一致するテキストを持っているかを見つけます

    Thread.CurrentThread.CurrentUICulture.Name; 

その value プロパティを SelectedAnswer に割り当てます。

于 2013-03-01T11:40:45.830 に答える