0

投稿されたビューモデルが DropdownListFor で値を選択していない理由がわかりません。代わりに、ID が表示されています。

コントローラーの HttpGet 編集アクション:

      model.MaritalStatuses = new SelectList(maritalStatuses, "Key", "Value", 0);
     ---
     ---
    static Dictionary<int, string> maritalStatuses = new Dictionary<int, string>()
 {
        {0, "--Select One---"},
        {1, "Unmarried,"},
        {2, "Divorced, "},
        {3, "Widowed,  "},
        {4, "Separated,"},
        {5, "Annulled  "}
    };

意見 :

 @Html.DropDownListFor(model => model.MaritalStatus, Model.MaritalStatuses,"--Select One--" , new { @class = "form-control" })

コントローラーの HttpPost 編集アクション:

     public ActionResult Edit(ProfileViewModel model)
            {
    ---
    // Here I get Keys in Property instead of Values in DropdownListFor
//For example : MaritalStatus =2    
---
    }

ProfileViewModel では:

public class ProfileViewModel
    {
---
---
 public string MaritalStatus { get; set; }
        public SelectList MaritalStatuses { get; set; }
---
---
}

ヘルプはありますか?

4

2 に答える 2

0

ID (値) は一意ですが、説明は一意であることが保証されていないため、正確な選択情報に依存することはできません。

これが、ドロップダウン リストが ID (ドロップダウンの値の部分) のみを返す理由です。そこから、最初にドロップダウンに入力したときに各項目のテキストを決定できるため、それらを元に戻すことができる必要があります.

于 2013-08-15T14:36:55.150 に答える
0

では、フォームが送信されたときに編集SelectListされるのは辞書のキーであり、辞書の値ではありません。POST代わりに値を送信したい場合は、文字列値をキーとして使用します。ビューで SelectListItem インスタンスを構築する例を次に示します (個人的にはこれを行うことを好みます)。

static List<string> maritalStatuses = new List<string>()
{
    "Unmarried",
    "Divorced",
    "Widowed",
    "Separated",
    "Annulled"
};

public class ProfileViewModel
{

 public string MaritalStatus { get; set; }

 public IList<string> MaritalStatuses { get { return maritalStatuses; } }
}

@Html.DropDownListFor(model => model.MaritalStatus, 
                      Model.MaritalStatuses.Select(s => new SelectListItem 
                          { 
                              Text = s, 
                              Value = s 
                          }, 
                      "--Select One--", 
                      new { @class = "form-control" })
于 2013-08-15T14:37:05.853 に答える