Blazor CRUD using REST API

Blazor CRUD using REST API:


====================================================
1. Create a new Project:
2. Configure:

3. Create a new Blazor Server App:

4. Create  EmployeeInfo Model:

5. Startup.cs :
                    Add HttpClient:
 6. Install from Nuget Package Manager:
7. Create Employee.razor Page:

@page "/employee"
@using BlazorCRUD.Data
@inject HttpClient Http

<NavLink class="nav-link" href="AddEmployee">
    <span class="oi oi-plus" aria-hidden="true"></span>Add New
</NavLink>

<h1>Employee Information</h1>
@if (objEmp == null)
{
    <p><em>Loading....</em></p>
}
else
{
    <table class="table">
        <thead>
            <tr>
                <th>Employee ID</th>
                <th>Name</th>
                <th>Gender</th>
                <th>Country</th>
                <th>City</th>
                <th>Action</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var emp in objEmp)
            {
                <tr>
                    <td>@emp.EmployeeId</td>
                    <td>@emp.Name</td>
                    <td>@emp.Gender</td>
                    <td>@emp.Country</td>
                    <td>@emp.City</td>
                    <td>
                        <a class="nav-link" href="EditEmployee/@emp.EmployeeId">
                            <span class="oi oi-pencil" aria-hidden="true"></span>Edit
                        </a>
                        <a class="nav-link" href="DeleteEmployee/@emp.EmployeeId">
                            <span class="oi oi-trash" aria-hidden="true"></span>Delete
                        </a>
                    </td>
                </tr>
            }
        </tbody>
    </table>
}
@code {
    IEnumerable<EmployeeInfo> objEmp;
    protected override async Task OnInitializedAsync()
    {
        //Get Data From API
        objEmp = await Http.GetJsonAsync<List<EmployeeInfo>>      ("https://localhost:44310/api/employee");
    }
}

8.  Create AddEmployee.razor Page:

@page "/AddEmployee"
@using BlazorCRUD.Data
@inject NavigationManager NavigationManager
@inject HttpClient Http
<h2>Add Employee</h2>
<hr />
<form>
    <div class="row">
        <div class="col-md-8">
            <div class="form-group">
                <label for="Name" class="control-label">Name</label>
                <input form="Name" class="form-control" @bind="@objEmp.Name" />
            </div>
            <div class="form-group">
                <label for="Gender" class="control-label"></label>
                <select @bind="@objEmp.Gender" class="form-control">
                    <option value="">--Select Gender--</option>
                    <option value="Male">Male</option>
                    <option value="Female">Female</option>
                </select>
            </div>
            <div class="form-group">
                <label for="Country" class="control-label">Country</label>
                <input form="Country" class="form-control" @bind="@objEmp.Country" />
            </div>
            <div class="form-group">
                <label for="City" class="control-label">City</label>
                <input form="City" class="form-control" @bind="@objEmp.City" />
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-4">
            <div class="form-group">
                <input type="button" class="btn btn-primary" @onclick="@CreateEmployee" value="Save" />
                <input type="button" class="btn btn-primary" @onclick="@Cancel" value="Cancel" />
            </div>
        </div>
    </div>
</form>

@code {
    EmployeeInfo objEmp = new EmployeeInfo();

    protected void CreateEmployee()
    {
        //Save using API
        Http.PostJsonAsync("https://localhost:44310/api/employee",objEmp);
        NavigationManager.NavigateTo("Employee");
    }
    void Cancel()
    {
        NavigationManager.NavigateTo("Employee");
    }
}

9. Create EditEmployee.razor Page:

@page "/EditEmployee/{CurrentID}"
@using BlazorCRUD.Data
@inject NavigationManager NavigationManager
@inject HttpClient Http

<h2>Update Employee</h2>
<hr />
<form>
    <div class="row">
        <div class="col-md-8">
            <div class="form-group">
                <input for="Name" class="form-control" @bind="@objEmp.EmployeeId" />
            </div>
            <div class="form-group">
                <label for="Name" class="control-label">Name</label>
                <input form="Name" class="form-control" @bind="@objEmp.Name" />
            </div>
            <div class="form-group">
                <label for="Gender" class="control-label"></label>
                <select @bind="@objEmp.Gender" class="form-control">
                    <option value="">--Select Gender--</option>
                    <option value="Male">Male</option>
                    <option value="Female">Female</option>
                </select>
            </div>
            <div class="form-group">
                <label for="Country" class="control-label">Country</label>
                <input form="Country" class="form-control" @bind="@objEmp.Country" />
            </div>
            <div class="form-group">
                <label for="City" class="control-label">City</label>
                <input form="City" class="form-control" @bind="@objEmp.City" />
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-4">
            <div class="form-group">
                <input type="button" class="btn btn-primary" @onclick="@UpdateEmployee" value="Update" />
                <input type="button" class="btn btn-primary" @onclick="@Cancel" value="Cancel" />
            </div>
        </div>
    </div>
</form>

@code {
    [Parameter]
    public string CurrentID { get; set; }
    EmployeeInfo objEmp = new EmployeeInfo();

    protected override async Task OnInitializedAsync()
    {
        // objEmp = await Task.Run(() => objEmpService.GetEmployeeById(Convert.ToInt32(CurrentID)));
        objEmp = await Http.GetJsonAsync<EmployeeInfo>("https://localhost:44310/api/employee/getbyid/"+CurrentID);
    }

    protected void UpdateEmployee()
    {
        //UPdate using API
        Http.PutJsonAsync("https://localhost:44310/api/employee",objEmp);

        NavigationManager.NavigateTo("Employee");
    }
    void Cancel()
    {
        NavigationManager.NavigateTo("Employee");
    }
}

10. Create DeleteEmployee.razor Page:

@page "/DeleteEmployee/{CurrentID}"
@using BlazorCRUD.Data
@inject NavigationManager NavigationManager
@inject HttpClient Http

<h2>Delete Employee</h2>
<hr />
<h3>Are you sure want to delete this?</h3>

<div class="row">
    <div class="col-md-8">
        <div class="form-group">
            <label>Employee ID:</label>
            <label>@objEmp.EmployeeId</label>
        </div>
        <div class="form-group">
            <label>Name:</label>
            <label>@objEmp.Name</label>
        </div>
        <div class="form-group">
            <label>Gender:</label>
            <label>@objEmp.Gender</label>
        </div>
        <div class="form-group">
            <label>Country:</label>
            <label>@objEmp.Country</label>
        </div>
        <div class="form-group">
            <label>City:</label>
            <label>@objEmp.City</label>
        </div>
    </div>
</div>
<div class="row">
    <div class="col-md-4">
        <div class="form-group">
            <input type="button" class="btn btn-danger" @onclick="@DeleteEmpInfo" value="Delete" />
            <input type="button" class="btn btn-primary" @onclick="@Cancel" value="Cancel" />
        </div>
    </div>
</div>

@code {
    [Parameter]
    public string CurrentID { get; set; }
    EmployeeInfo objEmp = new EmployeeInfo();

    protected override async Task OnInitializedAsync()
    {
        //objEmp = await Task.Run(() => objEmpService.GetEmployeeById(Convert.ToInt32(CurrentID)));
        objEmp = await Http.GetJsonAsync<EmployeeInfo>("https://localhost:44310/api/employee/getbyid/" + CurrentID);
    }

    protected void DeleteEmpInfo()
    {
        //Delete using API
        Http.DeleteAsync("https://localhost:44310/api/employee/DeleteById/" + CurrentID);
        NavigationManager.NavigateTo("Employee");
    }
    void Cancel()
    {
        NavigationManager.NavigateTo("Employee");
    }
}

For API:
=============================
Follow this Video:
Blazor CRUD using REST API:
https://www.youtube.com/watch?v=M7rJso2UYKc

CRUD Using Blazor And Entity Framework Core in ASP.NET Core:
https://www.youtube.com/watch?v=2GFNi2MVEf0

If you find this article helpful please Subscribe my Channel:
https://www.youtube.com/ashproghelp

============================Thank You===============================



Post a Comment

0 Comments