'바인딩'을 학습하고 나서 단순한 변수가 아닌 특정 요소를 여러개 담는 리스트를 사용하고 이를 바인딩하여 리스트내의 요소에 접근하고, 삽입 삭제 연산을 하는 웹을 구현하였습니다.

<!-- 페이지 이름 지정 -->
@page "/user"
<!-- 필요한 스크립트 Using -->
@using BlazerApp.Data;
<h3>Online Users</h3>
<p>
유저 수: <b>@_users.Count()</b>
</p>
<br />
<ul class="list-group">
@foreach (UserData user in _users)
{
<!-- @key="user" li가 사용하는 대상이 user라고 명시적으로 알려주는 속성-->
<li @key="user" class="list-group-item">
<button type="button" class="btn btn-link" @onclick="(() => KickUser(user))">❌</button>
<label>@user.Name</label>
</li>
}
</ul>
<br />
<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="BTN_AddUser">Add a User</button>
</div>
</div>
</div>
@code {
List<UserData> _users = new List<UserData>();
string _inputName;
//해당 페이지에 접속한경우, Unity의 Start와 비슷한 느낌
protected override void OnInitialized()
{
//더미 데이터 세개 추가
_users.Add(new UserData() { Name = "Kim" });
_users.Add(new UserData() { Name = "Lee" });
_users.Add(new UserData() { Name = "Park" });
}
private void BTN_AddUser()
{
_users.Add(new UserData() { Name = _inputName });
_inputName = null;
}
private void KickUser(UserData user)
{
_users.Remove(user);
}
}
<!-- 페이지 이름 지정 -->
@page "/user"
- 페이지의 URL을 지정합니다.
<!-- 필요한 스크립트 Using -->
@using BlazerApp.Data;
- C#문법과 동일하게 using을 이용하여 필요한 스크립트를 사용합니다.
- 단, 블레이저에서는 @를 붙여서 사용합니다.
<ul class="list-group">
@foreach (UserData user in _users)
{
<!-- @key="user" li가 사용하는 대상이 user라고 명시적으로 알려주는 속성-->
<li @key="user" class="list-group-item">
<button type="button" class="btn btn-link" @onclick="(() => KickUser(user))">❌</button>
<label>@user.Name</label>
</li>
}
</ul>
- 리스트 그룹을 생성하여 웹에 출력하고자 합니다.
- foreach문을 사용하여 리스트인 _users의 모든 요소를 하나씩 <li>로 출력합니다.
- <label>을 출력할때 앞에서 <button>을 출력하도록 합니다.
<button type="button" class="btn btn-link" @onclick="(() => KickUser(user))">❌</button>
- KickUser을 연결하는 버튼을 생성합니다.
- KickUser에는 UserData 매개변수가 있는데, 이것을 바로 호출할 수 없기에 람다식으로 user을 매개변수로 넣은 KickUser을 호출하도록 하는 람다함수를 매개변수로 넣어서 수행하도록 합니다.
<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="BTN_AddUser">Add a User</button>
</div>
</div>
</div>
- <div class="row"> 가로행에 <div class="col"> 세로열을 두개 넣어서 표현합니다.
- 입력필드는 _inputName이라는 변수와 바인드를 하고, 버튼은 BTN_AddUser()을 호출하여 리스트에 새로운 UserData를 삽입하도록 합니다.
'server > web server' 카테고리의 다른 글
[Web] 바인딩 변수 업데이트 (0) | 2023.02.23 |
---|---|
[Web] 속성 바인딩 (0) | 2023.02.23 |
[Web] 바인딩 (0) | 2023.02.23 |
[Web] Blazor Server App 프로젝트 시작 (0) | 2023.02.23 |
[C#] LINQ(Language-Integrated Query) 2 (0) | 2023.02.21 |
'바인딩'을 학습하고 나서 단순한 변수가 아닌 특정 요소를 여러개 담는 리스트를 사용하고 이를 바인딩하여 리스트내의 요소에 접근하고, 삽입 삭제 연산을 하는 웹을 구현하였습니다.

<!-- 페이지 이름 지정 -->
@page "/user"
<!-- 필요한 스크립트 Using -->
@using BlazerApp.Data;
<h3>Online Users</h3>
<p>
유저 수: <b>@_users.Count()</b>
</p>
<br />
<ul class="list-group">
@foreach (UserData user in _users)
{
<!-- @key="user" li가 사용하는 대상이 user라고 명시적으로 알려주는 속성-->
<li @key="user" class="list-group-item">
<button type="button" class="btn btn-link" @onclick="(() => KickUser(user))">❌</button>
<label>@user.Name</label>
</li>
}
</ul>
<br />
<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="BTN_AddUser">Add a User</button>
</div>
</div>
</div>
@code {
List<UserData> _users = new List<UserData>();
string _inputName;
//해당 페이지에 접속한경우, Unity의 Start와 비슷한 느낌
protected override void OnInitialized()
{
//더미 데이터 세개 추가
_users.Add(new UserData() { Name = "Kim" });
_users.Add(new UserData() { Name = "Lee" });
_users.Add(new UserData() { Name = "Park" });
}
private void BTN_AddUser()
{
_users.Add(new UserData() { Name = _inputName });
_inputName = null;
}
private void KickUser(UserData user)
{
_users.Remove(user);
}
}
<!-- 페이지 이름 지정 -->
@page "/user"
- 페이지의 URL을 지정합니다.
<!-- 필요한 스크립트 Using -->
@using BlazerApp.Data;
- C#문법과 동일하게 using을 이용하여 필요한 스크립트를 사용합니다.
- 단, 블레이저에서는 @를 붙여서 사용합니다.
<ul class="list-group">
@foreach (UserData user in _users)
{
<!-- @key="user" li가 사용하는 대상이 user라고 명시적으로 알려주는 속성-->
<li @key="user" class="list-group-item">
<button type="button" class="btn btn-link" @onclick="(() => KickUser(user))">❌</button>
<label>@user.Name</label>
</li>
}
</ul>
- 리스트 그룹을 생성하여 웹에 출력하고자 합니다.
- foreach문을 사용하여 리스트인 _users의 모든 요소를 하나씩 <li>로 출력합니다.
- <label>을 출력할때 앞에서 <button>을 출력하도록 합니다.
<button type="button" class="btn btn-link" @onclick="(() => KickUser(user))">❌</button>
- KickUser을 연결하는 버튼을 생성합니다.
- KickUser에는 UserData 매개변수가 있는데, 이것을 바로 호출할 수 없기에 람다식으로 user을 매개변수로 넣은 KickUser을 호출하도록 하는 람다함수를 매개변수로 넣어서 수행하도록 합니다.
<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="BTN_AddUser">Add a User</button>
</div>
</div>
</div>
- <div class="row"> 가로행에 <div class="col"> 세로열을 두개 넣어서 표현합니다.
- 입력필드는 _inputName이라는 변수와 바인드를 하고, 버튼은 BTN_AddUser()을 호출하여 리스트에 새로운 UserData를 삽입하도록 합니다.
'server > web server' 카테고리의 다른 글
[Web] 바인딩 변수 업데이트 (0) | 2023.02.23 |
---|---|
[Web] 속성 바인딩 (0) | 2023.02.23 |
[Web] 바인딩 (0) | 2023.02.23 |
[Web] Blazor Server App 프로젝트 시작 (0) | 2023.02.23 |
[C#] LINQ(Language-Integrated Query) 2 (0) | 2023.02.21 |