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");
    }
}
=============================
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===============================
 

 
0 Comments