在下拉列表中获取“system.nullreferenceexception对象引用未设置为对象实例”的错误

时间:2014-03-12 11:50:04

标签: asp.net-mvc-4 nullreferenceexception

在存储下拉列表的ID时,我收到“system.nullreferenceexception对象引用没有设置为对象的实例”的错误。我已经浏览了很多网站和帖子但仍然遇到了这个错误。请帮我解决这个错误。

型号:

  [Required]
    [Display(Name = "Profession")]
    public virtual string professionid { get; set; }
    IEnumerable<SelectListItem> professionList = new List<SelectListItem>();
    public SelectList getProfession()
    {

        professionList = (from m in _db.ProfessionInfos select m).AsEnumerable().Select(m => new SelectListItem() { Text = m.P_Name, Value = m.P_id.ToString() });
        return new SelectList(professionList, "Value", "Text", professionid);
    }

控制器:

[HttpGet]
    public ActionResult Registration()
    {
        var model = new M_Reg();
        return View(model);
    }

查看:

 <div class="editor-label">
            @Html.LabelFor(m => m.professionid)
        </div>
        <div class="editor-field">
            @Html.DropDownListFor(m => m.professionid,Model.getProfession(),"Choose Profession")
            @Html.ValidationMessageFor(m => m.professionid)
        </div>

1 个答案:

答案 0 :(得分:0)

将另外一个属性添加到SelectList ProfessionIds

类型的模型中

并在您的控制器上为此属性设置值,如:

model.ProfessionIds=model.getProfession();现在您可以在您的观看中使用它,例如:@Html.DropDownListFor(m => m.professionid,Model.ProfessionIds,"Choose Profession")

或者第二种方法是使用ViewBag将ProfessionIds从控制器传递到视图:

您的Controller的操作方法如下所示:

var model = new M_Reg();
ViewBag.Ids=model.getProfession();
return View(model);

在您的观点中使用

@Html.DropDownListFor(m => m.professionid,(Selectlist)ViewBag.Ids,"Choose Profession")