이전의
Binding.razor는 삭제하고, 새로운 컴포넌트User.razor를 생성합니다.
@page "/user"
<h3>Online Users</h3>
@code {
// C# 코드 영역
}
기존
Binding링크 삭제 후,User링크로 교체합니다.
<div class="nav-item px-3">
<NavLink class="nav-link" href="user">
<span class="oi oi-list-rich" aria-hidden="true"></span> User
</NavLink>
</div>
Data폴더 내UserData.cs파일 생성
namespace BlazorApp.Data
{
public class UserData
{
public string Name { get; set; }
}
}
@page "/user"
@using BlazorApp.Data
<h3>Online Users</h3>
<p>
Users: <b>@_users.Count()</b>
</p>
<ul class="list-group">
@foreach (var user in _users)
{
<li @key="user" class="list-group-item">
<label>@user.Name</label>
</li>
}
</ul>
@code {
List<UserData> _users = new();
protected override void OnInitialized()
{
_users.Add(new UserData() { Name = "Shung" });
_users.Add(new UserData() { Name = "Kong" });
_users.Add(new UserData() { Name = "Hi" });
}
}
📌 해설:
@_users.Count() → 단방향 바인딩을 통해 유저 수 출력foreach를 이용해 사용자 이름 리스트 출력OnInitialized()는 페이지 최초 로드시 자동 실행되는 함수입니다<div class="container">
<div class="row">
<div class="col">
<input class="form-control" placeholder="Add User" @bind-value="_inputName" />
</div>
<div class="col">
<button class="btn btn-primary" type="button" @onclick="AddUser">Add a User</button>
</div>
</div>
</div>
@code {
string _inputName;
void AddUser()
{
_users.Add(new UserData() { Name = _inputName });
_inputName = string.Empty;
}
}
📌 해설:
@bind-value="_inputName": 입력한 값을 C# 변수로 자동 반영 (양방향 바인딩)AddUser() 호출 → 리스트에 새 유저 추가<ul class="list-group">
@foreach (var user in _users)
{
<li @key="user" class="list-group-item">
<button type="button" class="btn btn-link" @onclick="() => KickUser(user)">Kick</button>
<label>@user.Name</label>
</li>
}
</ul>
@code {
void KickUser(UserData user)
{
_users.Remove(user);
}
}
📌 해설:
@onclick="() => KickUser(user)" → 인자 전달을 위한 람다식 사용user 객체를 받아 리스트에서 제거| 바인딩 종류 | 설명 | 예시 코드 |
|---|---|---|
| 단방향 바인딩 | C# → HTML 데이터 표시 | @_value, @user.Name |
| 양방향 바인딩 | C# ↔ HTML (입력값 반영) | @bind-value="_inputName" |
| 속성 바인딩 | 속성 값을 조건부로 제어 | disabled="@(_users.Count >= 5)" |
| 이벤트 바인딩 | 이벤트 핸들러 함수와 연결 (버튼 클릭 등) | @onclick="AddUser", @onclick="()=>KickUser" |
Add a User 버튼 클릭 시 유저 추가Kick 버튼 클릭 시 리스트에서 삭제됨