0

何らかの理由で、フォームをポストバックすると、ドロップダウンの SelectedId が常に null になります。モデル内のアイテムは null ではなく、SelectedID だけです。ドロップダウン選択を除いて、私のモデルの他のすべての値は問題ありません。これが私のドロップダウンに関連するすべてのコードです。何か案は?ありがとうございました!

PS - ドロップダウンにテンプレートを使用しています。cshtml ビューで @Html.EditorForModel() を使用すると、モデルからドロップダウンが自動的に作成されます。

テンプレート:

@model AFUEMVC.Models.DropDownModels.DropDownViewModel
@Html.DropDownListFor(x => x.SelectedId,  new SelectList(Model.Items, "Value", "Text",      Model.SelectedId))

モデル:

//Dropdowns
[Display(Name = "Fire Type"),]
public DropDownViewModel FireTypeItems { get; set; }

ビューモデル:

    public class DropDownViewModel
{
    public string SelectedId { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}

編集: ドロップダウンに次の方法で入力しています。

 public void GenerateDropDowns(BasicIdentificationModel model)
    {
        ///////////////////////DROP DOWNS 
        model.FireTypeItems = GetFireTypeItems(); 
        /////////////////////////////////////

    }

 public DropDownViewModel GetFireTypeItems()
    {
        DropDownViewModel newdd = new DropDownViewModel();

        newdd.Items = new[]
            {
                new SelectListItem { Value = "1", Text = "IA" },
                new SelectListItem { Value = "2", Text = "Extended Attack" },
                new SelectListItem { Value = "3", Text = "Large Fire Support" },                  
            };

        return newdd;

    }

  [HttpPost]
    public ActionResult BasicIdentificationIndex(BasicIdentificationModel returndata)
    {
        GenerateDropDowns(returndata);             
        SaveDB(returndata);       
       return RedirectToAction("DispatchResponseIndex", "DispatchResponse");
    }
4

2 に答える 2

1

解決しました。

@Html.DropDownListFor(model => model.State, new SelectList(Enum.GetValues(typeof(MyNamespace.Enums.States))))

ここに投稿を見つけました:

MVC3 Razor DropDownListFor Enums

これを行う最も簡単な方法です。

于 2013-05-29T20:12:44.867 に答える