我在MVC中创建了一个自定义模型,我在其中传递了3个表项作为列表。在视图中,我正在获取这些详细信息。但是在View中,我得到Object reference not set to an instance of an object.
我是MVC的新手,任何人都可以帮助我。我不知道我在哪里做错了!
我的MVC控制器:
public ActionResult Index()
{
var adminModel = new AdminModel();
return View(adminModel);
}
我的自定义型号代码:
public class AdminModel
{
public List<Notification> Notifications { get; set; }
public List<Places> Places { get; set; }
}
我的查看代码:
@model TravelFly.Models.AdminModel
@{
ViewBag.Title = "Admin Dashboard";
Layout = "~/Views/Shared/_AdminPartial.cshtml";
}
<p class="text-danger">@Model.Notifications.Count</p>
... some other contents...
更新: 控制器代码:
public ActionResult Index()
{
var adminModel = new AdminModel();
return View(adminModel);
}
类文件:
公共列表通知{get;组; } = new List(); 公共列表位置{组; } = new List();
答案 0 :(得分:1)
您可能应该在模型上初始化集合或测试视图中是否为空。
actionResponse.reset();
os.flush();
os.write(updatedBody);
os.close();
OR
var adminModel = new AdminModel
{
Notifications = new List<Notification>(),
Places = new List<Places>()
};
OR
@if(Model.Notifications !=null)
{
<p class="text-danger">@Model.Notifications.Count</p>
}
答案 1 :(得分:0)
在将模型传递给视图之前,不会对其进行填充。您需要调用这样的内容:
public ActionResult Index()
{
var adminModel = new AdminModel();
adminModel.Notifications = new List<Notifications>();
// Create a new notification [yourCreatedNotification]... then add it to the list
adminModel.Notifications.Add(yourCreatedNotification);
return View(adminModel);
}
答案 2 :(得分:0)
Notifications
在AdminModel
类中没有默认值,因此,当您向视图发送新的adminModel
对象时,该属性为{{1} },您无法在其上致电null
。
解决方案取决于您要实现的目标,但是如果要避免出现异常,则可以通过初始化为属性添加默认值。
.Count
如果您不想在班级中更改它,可以在将其发送到视图之前设置它的值:
public class AdminModel
{
public List<Notification> Notifications { get; set; } = new List<Notification>()
public List<Places> Places { get; set; }
}
答案 3 :(得分:0)
实际上,我没有将数据传递给我在自定义模型中创建的列表项。因此,新的控制器代码将为:
public ActionResult Index()
{
var adminModel = new AdminModel {
Notifications = db.Notifications.ToList(),
Places = db.Places.ToList()
};
return View(adminModel);
}
和自定义模型类文件:
public class AdminModel
{
public List<Notification> Notifications { get; set; } = new List<Notification>();
public List<Places> Places { get; set; } = new List<Places>();
}