asp mvc Dropdown SelectedId为null

时间:2013-05-29 18:30:26

标签: asp.net-mvc razor

由于某些原因,当我回发表单时,我的下拉列表中的SelectedId始终为null。模型中的项不是null,只是SelectedID。除了下拉选择之外,我的模型的所有其他值都很好。这是与我的下拉列表相关的所有代码。有任何想法吗?谢谢!

P.S - 我在下拉列表中使用模板,当我在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");
    }

2 个答案:

答案 0 :(得分:1)

解决。

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

我在这里找到了一个帖子:

MVC3 Razor DropDownListFor Enums

到目前为止最简单的方法。

答案 1 :(得分:0)

试试这个(不使用模板):

型号:

public class myDbContext : DbContext
{
    ...
    public DbSet<SelectListItem> SelectListItems{ get; set; }
    ...
    [Display(Name = "Fire Type"),]
    public string SelectedID { get; set; }
    ...
}

在您的视图中:

@Html.DropDownListFor(model => model.SelectedID, new SelectList(new Models.myDbContext().SelectListItems, "Value", "Text"))