我有以下控制器方法
public ActionResult Details()
{
try
{
Pacient pacientdp = new Pacient();
if (pacientdp.PacientPrenume == null)
{
return RedirectToAction("Index", "Home");
}
var id = WebSecurity.GetUserId(User.Identity.Name);
MedicalDBContext pacientContext = new MedicalDBContext();
Pacient pacient = pacientContext.Pacients.FirstOrDefault(x => x.PacientID == id);
return View(pacient);
}
catch (Exception ex)
{
return View("Error", new HandleErrorInfo(ex, "Home", "Index"));
}
}
导航到Details View时,如果我从控制器方法中注释if部分,则会引发NullReferenceException。这种情况有时会发生,但有时它并不存在。这是我想要的行为。 所以我添加了if部分,所以当模型属性(PacientPrenume)为null以重定向到action时,此方法每次都重定向到action,即使模型不为null。
使用上述方法,无论pacientdp模型如何都执行块(如果为null,则为
)如何仅在模型???
时处理此异常答案 0 :(得分:0)
发现问题,因此上下文模型实际设置了我的模型的值,因此pacientdp.PacientPrenume属性始终为null。贝娄是工作方法
public ActionResult Details()
{
try
{
MedicalDBContext pacientContext = new MedicalDBContext();
var id = WebSecurity.GetUserId(User.Identity.Name);
if (pacientContext.Pacients.FirstOrDefault(x => x.PacientID == id) == null)
{
return RedirectToAction("Index", "Home");
}
Pacient pacient = pacientContext.Pacients.FirstOrDefault(x => x.PacientID == id);
return View(pacient);
}
catch (Exception ex)
{
return View("Error", new HandleErrorInfo(ex, "Home", "Index"));
}
}