Search code examples
blazorblazor-webassembly

The name 'users' does not exist in the current context


I am attempting to pass a a list of users to a custom component I am developing, however I receive the build error:

The name 'users' does not exist in the current context.

Code:

@page "/transactions/list"
@using Accounting.Web.Components.DataTable;

<h3>List</h3>

List

<DataTable Items="users" class="table table-bordered">

</DataTable>

@code {

    public class User
    {
        public int Id { get; set; }
        public string Username { get; set; }
    }

    public List<User> users { get; set; } = new();

    User user = new()
        {
            Id = 1,
            Username = "Me"
        };

    users.Add(user);   @<< This is where the error occurs
}

I can't see where I am going wrong...


Solution

  • Instruction need to be encapsulate in method. If you want load data in a component, you can override OnInitialized :

    @code {
    
        public class User
        {
            public int Id { get; set; }
            public string Username { get; set; }
        }
    
        public List<User> users { get; set; } = new();
    
        User user = new()
        {
            Id = 1,
            Username = "Me"
        };
    
        protected override void OnInitialized()
        {
            users.Add(user);
        }
    }
    

    But I think you only want data to test the display. In this case you can simplify like :

    @code {
    
        public class User
        {
            public int Id { get; set; }
            public string Username { get; set; }
        }
    
        public List<User> users { get; set; } = new List<User>{
            new User{
                Id = 1,
                Username = "Me"
            },
            new User{
                Id = 2,
                Username = "You"
            }
        };
    }