对象引用的 MVC 4 错误
MVC 4 error for object referance
这是型号:
[Table("Person")]
public class Persons
{
public int ID { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string Location { get; set; }
}
这是我的 DbContext
以上模型 class。
public class PersonContext : DbContext
{
public DbSet<Persons> persons { get; set; }
}
这是我的控制器Class:
public class PersonController : Controller
{
//
// GET: /Person/
public ActionResult Index(int id)
{
PersonContext PC = new PersonContext();
Persons PS = PC.persons.SingleOrDefault(pr => pr.ID == id);
return View(PS);
}
}
这是我的观点:
'@model MVCDemo.Models.Persons
@{
ViewBag.Title = "Index";
Layout = "~/Views/_ViewStart.cshtml";
}
<h2>Index</h2>
<div>
<h4>Personal Information</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Name)
</dt>
<dd>
@Html.DisplayFor(model => model.Name)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Gender)
</dt>
<dd>
@Html.DisplayFor(model => model.Gender)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Location)
</dt>
<dd>
@Html.DisplayFor(model => model.Location)
</dd>
</dl>
</div>
<p>
@Html.ActionLink("Edit", "Edit", new { id = Model.ID }) |
@Html.ActionLink("Back to List", "Index")
</p>'
在上面的粗体区域我收到
的错误
Object reference not set to an instance of an object.
请告诉我出现此错误的原因以及解决方法。
如果找不到与给出的条件。您描述的错误最可能的原因是 Persons
的对象实例为空。
如评论中所述,此错误是因为 Persons objecte 变为空,使用空合并运算符 (??
)
进行空检查
public ActionResult Index(int id)
{
PersonContext PC = new PersonContext();
Persons PS = PC.persons.SingleOrDefault(pr => pr.ID == id);
PS = PS ?? new Persons();
return View(PS);
}
这是型号:
[Table("Person")]
public class Persons
{
public int ID { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string Location { get; set; }
}
这是我的 DbContext
以上模型 class。
public class PersonContext : DbContext
{
public DbSet<Persons> persons { get; set; }
}
这是我的控制器Class:
public class PersonController : Controller
{
//
// GET: /Person/
public ActionResult Index(int id)
{
PersonContext PC = new PersonContext();
Persons PS = PC.persons.SingleOrDefault(pr => pr.ID == id);
return View(PS);
}
}
这是我的观点:
'@model MVCDemo.Models.Persons
@{
ViewBag.Title = "Index";
Layout = "~/Views/_ViewStart.cshtml";
}
<h2>Index</h2>
<div>
<h4>Personal Information</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Name)
</dt>
<dd>
@Html.DisplayFor(model => model.Name)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Gender)
</dt>
<dd>
@Html.DisplayFor(model => model.Gender)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Location)
</dt>
<dd>
@Html.DisplayFor(model => model.Location)
</dd>
</dl>
</div>
<p>
@Html.ActionLink("Edit", "Edit", new { id = Model.ID }) |
@Html.ActionLink("Back to List", "Index")
</p>'
在上面的粗体区域我收到
的错误Object reference not set to an instance of an object.
请告诉我出现此错误的原因以及解决方法。
Persons
的对象实例为空。
如评论中所述,此错误是因为 Persons objecte 变为空,使用空合并运算符 (??
)
public ActionResult Index(int id)
{
PersonContext PC = new PersonContext();
Persons PS = PC.persons.SingleOrDefault(pr => pr.ID == id);
PS = PS ?? new Persons();
return View(PS);
}