我在索引页上收到此错误“对象引用未设置为对象的实例”

时间:2018-07-13 10:34:01

标签: asp.net model-view-controller

我从视图页位中删除了IEnumerable,也遇到了相同的错误,并且在控制器的索引操作中保留了断点以检查bu也无法解决。

这是我的索引视图

@model IEnumerable<BloodDonation1.Models.DonorModel>

<table class="table">
<tr>
    <th>@Html.DisplayNameFor(model=>model.Id)</th>
    <th>

@foreach (var item in Model) {
<tr>
    <td>@Html.DisplayFor(modelItem=>item.Id)</td>

这是我的DAL页面

  public class DonationContext:DbContext
{
    public DbSet<DonorModel> DonorModel { get; set; }


}

这是我的控制器视图

    private DonationContext dc = new DonationContext();
    // GET: Donor
    public ActionResult Index()
    {

        return View(); ;
    }

    public ActionResult Create()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Create(DonorModel donorModel)
       {
        if(ModelState.IsValid)
        {
            dc.DonorModel.Add(donorModel);
            dc.SaveChanges();
                return RedirectToAction("Index");
          }
        return View(donorModel);
        }

这是我的模型视图

 public class DonorModel
{
    public int Id { get; set; }


    public string FirstName { get; set; }


    public string BloodGroup { get; set; }

}

1 个答案:

答案 0 :(得分:0)

您永远不会将值传递给Index.cshtml。

这是将值传递给视图的方式

private DonationContext dc = new DonationContext();
// GET: Donor
public ActionResult Index()
{
    var model = dc.DonorModel;
    return View(model); 
} 

在您的视图中是一个错误。

<th>@Html.DisplayNameFor(model=>model.Id)</th> 

将无法正常工作。因为您的模型是IEnumerable,并且不包含Id的定义。 (如果您可以使用扩展方法也可以)