inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

해외취업 ASP.NET Core 웹개발 기본 강좌

뷰모델

List<Teacher> 관련

151

INTERNET JUNK

작성한 질문수 3

0

2개의 파일에서 List가 만들어졌는데요.

a. HomeController에서

List teachers = new List()

{

..........

}

b. StudentTeacherViewModel에서

public List Teachers { get; set; }

List은 Models>Teacher의 목록을 말하는 것 같은데

teachers vs. Teachers 이게 왜 대문자 소문자로 되는지, 그리고 그 차이는 무엇인지를 알고 싶습니다.

홈컨트롤러에서는 선생님들을 만들어 주어서 그것을 바로 Student.cshtml(뷰)로 뿌려주면 되는 것 같은데, 왜 굳이 뷰모델을 따로 만들어주는지..

머리 속이 혼잡스럽네요.

ASP.NET-Core

답변 1

2

SEJONG IT EDU

좋은 고민이에요 :)

List teachers = new List() { ... } 

자 이렇게해서 곧바로 뷰로 teachers를 넘기면 View(teachers);

Student.cshtml에서 선생님들을 볼 수 있을거에요. 하지만 우리가 뷰모델을 쓰는 이유는 "여러가지" 정보를 같이 넘기기 위해서에요.

View(teachers);

이것만하면 Student.cshtml에서는 선생님 정보만 볼 수 있게되어요.

만약 Student.cshtml에서 선생님, 학생, 학부모 등등 여러가지 정보를 "같이" 보여야할 때 뷰모델을 통해서 각각의 정보를 매핑하고 뷰에 넘기는 겁니다.

하지만 teachers만 넘기면 Student.cshtml에서는 나머지 학생과 학부모 정보는 볼 수가 없겠죠.

그래서 뷰모델을 쓰는 겁니다. 여러가지 정보를 같이 넘기는 연습을 하는거에요.

그러기 위해서는 뷰모델이라는 파일을 만들어야하는데 그래서 StudentTeacherViewModel이라는 이름을 지어주고

그 안에 내가 한 뷰에서 보여주기 위해 필요한 정보 (겟터 & 셋터)를 추가하는거에요.

우리 케이스는 학생과 선생님 정보를 보여주는거였죠? 선생님 정보는 여러명을 보여주는 거니까 리스트를 써서

public List Teachers { get; set; } 

이라는 설정을 해주었고 이제 우리가 만든 리스트 teachers를

List<Teacher> teachers = new List<Teacher>()

{

new Teacher() { Name = "세종대왕", Class = "한글" },

new Teacher() { Name = "이순신", Class = "해상전략" },

new Teacher() { Name = "제갈량", Class = "지략" },

new Teacher() { Name = "을지문덕", Class = "지상전략" }

};

뷰모델안에 있는 Teachers에 매핑해주는거에요.

var viewModel = new StudentTeacherViewModel()

{

Student = new Student(),

Teachers = teachers

};

그렇게되면 이제 Teachers에서는 teachers의 내용을 갖게되고

뷰에서 Model.Teachers를 통해 선생님 정보를 활용할 수 있는거죠.

마이그레이션 오류

0

329

0

Identity 관련 질문

0

278

0

net core 2.1 버전에는 없는건가요

0

299

0

Identity 계정 생성 로직 강의에서 Register() 함수 호출 오류 문의

0

395

1

DbContext 상속

0

292

0

razor syntax 질문

0

341

0

마이그레이션 문제 질문

0

355

1

강의할때 코드 크게 보여주실수 있나요 ...

0

332

1

윈도우 10에서 배포하는 방법 문의

0

263

0

UseSqlServer 오류

0

1047

5

[Authorize] 헤더

0

257

1

dotnet ef database update 문제

0

224

0

MVC 패턴 순서

0

298

0

폴더명은 항상 정해져있나요?

0

215

0

HTTP Error 500.30 - ANCM In-Process Start Failure

0

1199

2

Add 함수와 Save를 따로 만드는 이유가 있을까요?

0

291

1

UseMvc 안됨(core 3.0)

0

410

4

값이 넘어왔는지 찍어보는 거요..

1

329

3

널참조 에러

0

371

1

ValidateAntiForgeryToken를 쓰는 이유

0

865

3

아무리 해도 안되네요.

0

312

3

sqlserver가 MSSQLLocalDB가 없어요

0

253

1

AddScoped, AddTransient, AddSingleton 차이점

0

701

1

엔티티 프레임워크를 아마존 rds랑 연동하고 싶습니다.

0

187

1