如何在MVC中使用自定义模型

时间:2018-09-21 16:31:24

标签: asp.net-mvc

我在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();

4 个答案:

答案 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)

NotificationsAdminModel类中没有默认值,因此,当您向视图发送新的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>();
    }