본문 바로가기

웹 개발/ASP .NET

[ASP.NET] Controller, View

Controller, View


이전 시간에는 url을 통해 서버로 파라미터를 전달했다. 이번 시간에는 view 화면을 만들어서 사용자가 input창에 입력한 값을 Controller로 전달해보자 .

 

예제


1. Views 폴더 생성

 이 폴더는 웹페이지의 화면에 해당하는 파일들이 저장된다. ASP.NET Core mvc에서는 Razor View가 사용된다. 

 * Razor View에는 HTML 태그와 C# 프로그래밍 언어를 사용할 수 있다. 

 

2. index.cshtml 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" >
    <meta http-equiv="X-UA-Compatible" comtent="IE=edge" >
    <meta name="viewport" content="width=device-width", initial-scale=1.0">
    <title>Document</title>
    
</head>
<body>
        hello asp.net!!
</body>
</html>

=> 일반 html 페이지와 유사하다. html에서 사용되는 표준 요소를 사용할 수 있으며, css 파일, script와도 연결할 수 있다. 

그러나 실제 html 파일은 아니며 빌드로 컴파일된 후에 사용자가 프라우저에서 볼 수 있는 html페이지로 변환해서 보여준다. 

 

3. program.cs

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
var app = builder.Build();

//Controller를 사용한 경로 매핑
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}"
);

app.Run();

=> builder.Services.AddControllersWithViews();

이 부분을 수정했다. 이렇게 하면 View가 있는 Controller이 웹 애플리케이션에 연결된다. 

 

4. HomeController.cs

아래 내용 추가

        public IActionResult Test() {

            return View("~/Views/index.cshtml"); // 사용자 요청에 대한 응답으로 ViewResult를 return
        }

 

실행결과

 

예제


1. HomeController의 Test() 메서드에서 리턴 값의 경로를 생략하는 방법도 있다. 

index.cshtml을 Home 폴더를 만들이 이 하위에 위치시킨다.

여기서 index.cshtml 의 파일명을 Controller의 메서드명과 동일하게 Test.cshtml로 변경해보자. 

 

2. HomeController 수정

Test() 메서드의 리턴값을 지운다

        public IActionResult Test() {

            return View(); // 사용자 요청에 대한 응답으로 ViewResult를 return
        }

=> HomeController의 메서드명과 razor 페이지의 이름을 동일하게 하면 알아서 view page를 찾게된다.