Lord Vermillion
Lord Vermillion

Reputation: 5424

c# nested classes the type or namespace could not be found

I have a class with nested subclasses:

public class listDevicesModel
    {
        public int totalCount { get; set; }
        public Messages messages { get; set; }
        public Devices devices { get; set; }

        public class Entry
        {
            public string key { get; set; }
            public object value { get; set; }
        }

        public class Detail
        {
            public List<Entry> entry { get; set; }
        }

        public class Devices
        {
            public List<Device> device { get; set; }
        }

        public class Device
        {
            public string @id { get; set; }
            public string uuid { get; set; }
            public string principal { get; set; }
            public int blockReason { get; set; }
            public int clientId { get; set; }
            public string comment { get; set; }
            public int compliance { get; set; }
            public int countryCode { get; set; }
            public int countryId { get; set; }
            public string countryName { get; set; }
            public string createdAt { get; set; }
            public string currentPhoneNumber { get; set; }
            public List<Detail> details { get; set; }
            public int deviceCount { get; set; }
            public string easLastSyncAttempt { get; set; }
            public string easUuid { get; set; }
            public string emailAddress { get; set; }
            public string emailDomain { get; set; }
            public bool employeeOwned { get; set; }
            public string homeOperator { get; set; }
            public int languageCountryId { get; set; }
            public int languageId { get; set; }
            public string lastConnectedAt { get; set; }
            public string manufacturer { get; set; }
            public bool mdmManaged { get; set; }
            public int mdmProfileUrlId { get; set; }
            public string model { get; set; }
            public string name { get; set; }
            public bool notifyUser { get; set; }
            public string @operator { get; set; }
            public int operatorId { get; set; }
            public string platform { get; set; }
            public string platformType { get; set; }
            public int quarantinedStatus { get; set; }
            public int regCount { get; set; }
            public string regType { get; set; }
            public string registeredAt { get; set; }
            public string status { get; set; }
            public int statusCode { get; set; }
            public string userDisplayName { get; set; }
            public string userFirstName { get; set; }
            public string userLastName { get; set; }
            public int userSource { get; set; }
            public string userUUID { get; set; }
            public int wipeReason { get; set; }
        }
    }

In my MVC razor view i try to access the data:

@model PostenNorge.Models.JsonObjectModels.listDevicesModel
<b>@Model.messages.message</b>
<br />
<br />
<ul>

    @foreach(Device d in Model.devices.device)
    {
        <li>@d.name - @d.uuid - @d.currentPhoneNumber</li>
    }

</ul>

On Device in the foreach i get "The type or namespace name "Device" could not be found".

How can i access the nested class types in my view?

Upvotes: 1

Views: 369

Answers (1)

Jon Skeet
Jon Skeet

Reputation: 1502825

You need to specify the nested name:

@foreach(listDevicesModel.Device d in Model.devices.device)

Or use implicit typing:

@foreach(var d in Model.devices.device)

Personally I'd avoid using nested classes here anyway, unless you really have to. Even if you do really have to, I'd rename the top-level class to follow normal naming conventions, i.e. make it start with a capital letter.

Upvotes: 4

Related Questions