ASP.NET Core 2.0 보기 엔진 상세 설명(번역)

문제.
어떻게 ASP.NET Core 2.0 에서 Razor 엔진 을 사용 하여 보 기 를 만 듭 니까?
답안
새 빈 항목 을 만 들 고 Startup.cs 를 수정 하 며 MVC 서비스 와 요청 미들웨어 를 추가 합 니 다.

public void ConfigureServices(IServiceCollection services)

{

  services.AddMvc();

}

 

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

{

  if (env.IsDevelopment())

  {

    app.UseDeveloperExceptionPage();

  }

 

  app.UseMvc(routes =>

  {

    routes.MapRoute(

      name: "default",

      template: "{controller=Home}/{action=Index}/{id?}");

  });

}   

Controllers 디 렉 터 리 를 추가 하고 HomeController 컨트롤 러 를 추가 합 니 다.

public class HomeController : Controller

{

  public IActionResult Index()

  {

    return View();

  }

} 
View/Home 디 렉 터 리 를 추가 하고 Razor 보기 Index.cshtml 를 추가 합 니 다.

@{

  var birthDate = new DateTime(1930, 8, 26);

}

 

<strong>Hello MVC Razor</strong>

 

<p>James Bond, you were born @birthDate.ToString("yyyy-MM-dd")</p>

 

<p>James Bond is about @((DateTime.Now - birthDate).Days / 365) years old</p>

 

<p>@("<strong>Hello World</strong>")</p>

 

<p>@Html.Raw("<strong>[email protected]</strong>")</p>

 

@{

  var isHungry = true;

  var gender = 0;

  IEnumerable<string> friends = new[] { "Thor", "Hulk", "Iron Man" };

  var technology = "asp.net mvc";

  var count = technology.Count();

}

 

<p>

  @if (isHungry)

  {

    <text>I'm hungry</text>

  }

  else

  {

    <text>I'm full</text>

  }

</p>

 

 

@switch (gender)

{

  case 0:

    <p>Male</p>

    break;

  case 1:

    <p>Female</p>

    break;

  default:

    break;

}

 

@for (int i = 0; i < technology.Length; i++)

{

  @technology[i].ToString().ToUpper()

}

 

<ul>

  @foreach (var item in friends)

  {

    <li>@item</li>

  }

</ul>

 

@try

{

  var a = 1; var b = 0;

  var result = a / b; // divide by zero

}

catch (Exception ex)

{

  <p>@ex.Message</p>

} 

이 디 렉 터 리 구 조 는 다음 과 같 습 니 다.

실행,이 때 페이지 표시:

토론 하 다.
컨트롤 러 가 ViewResult 로 돌아 갈 때 ASP.NET Core 미들웨어 는 Razor 템 플 릿(.cshtml 파일)을 찾 아 실행 합 니 다.Razor 템 플 릿 은 C\#와 HTML 의 혼합 문법 을 사용 하여 최종 HTML 페이지 를 생 성 합 니 다.
보기 찾기
ViewResult 가 실 행 될 때 다음 순서 로 보기 가 있 는 경 로 를 찾 습 니 다.
1. Views/[Controller]/[Action].cshtml
2. Views/Shared/[Action].cshtml
템 플 릿 파일 이름과 컨트롤 러 방법의 이름 이 일치 하지 않 으 면 ViewResult 에서 매개 변 수 를 통 해 보기 템 플 릿 의 이름 을 지정 할 수 있 습 니 다.

public IActionResult AboutMe()

{

  return View("Bio");

}  

Razor 문법
HTML 탭 은 마지막 HTML 페이지 에 그대로 표 시 됩 니 다.

<strong>Hello MVC Razor</strong>   
@기 호 를 통 해 HTML 에서 C\#코드 로 넘 어 갑 니 다.C\#코드 블록 은 다음 과 같은 구조 로 포함 할 수 있 습 니 다.

@{

  var birthDate = new DateTime(1930, 8, 26);

} 
C\#표현 식 은@기 호 를 통 해 최종 HTML 페이지 로 출력 할 수 있 습 니 다.

<p>James Bond, you were born @birthDate.ToString("yyyy-MM-dd")</p> 
또는@(/C\#표현 식)으로 포함:

<p>James Bond is about @((DateTime.Now - birthDate).Days / 365) years old</p> 
Razor 는 기본적으로 C\#표현 식 에 HTML 인 코딩 을 하고 아래 의 Razor 코드 와 페이지 에 생 성 된 HTML 구 조 를 관찰 합 니 다.

<p>@("<strong>Hello World</strong>")</p> 

<p>&lt;strong&gt;Hello World&lt;/strong&gt;</p> 

@Html.Raw 는 C\#표현 식 이 HTML 로 인 코딩 되 는 것 을 피 할 수 있 습 니 다.다음 과 같 습 니 다.

<p>@Html.Raw("<strong>[email protected]</strong>")</p> 
 

<p><strong>[email protected]</strong></p> 
    
제어 구조
Razor 보기에 서 우 리 는 C\#코드 블록 에서 각종 제어 구 조 를 사용 할 수 있 습 니 다.예 를 들 어@if,@switch,@for,@foreach,@while,@do while 와@try.구체 적 인 예 시 는 Views/Home/Index.cshtml 코드 를 볼 수 있 습 니 다.
지령
Razor 보 기 는 Razor Page 를 계승 하 는 C\#클래스(내부 구현,사용자 에 게 투명)로 전 환 됩 니 다.명령 은 이러한 종류 나 보기 엔진 의 행동 을 바 꿀 수 있다.자주 사용 하 는 명령 은:
@using
생 성 된 C\#클래스 에 using 명령 을 추가 합 니 다.일반적인 C\#클래스 와 유사 합 니 다.이 명령 은 네 임 스페이스 를 가 져 오 는 데 사 용 됩 니 다.
@model
Razor Page 에 들 어 오 는 일반적인 형식 T 를 지정 합 니 다.컨트롤 러 가 ViewResult 로 돌아 갈 때 매개 변 수 를 통 해 모델 형식 을 지정 할 수 있 습 니 다.그리고 보기 페이지 에서 모델 속성 을 통 해 모델 인 스 턴 스 를 가 져 옵 니 다.
 @inject
보기 에 서 비 스 를 주입 하 는 데 사용 합 니 다.(우선 Startup 에서 서비스 용기 에 이 서 비 스 를 등록 해 야 합 니 다.)서비스 형식 과 이름 을 제공 해 야 합 니 다.보기 의 의존 주입 은 보기 에 강 한 유형의 데이터 조회 서 비 스 를 제공 하 는 데 사 용 됩 니 다.그렇지 않 으 면 저 희 는 동적 인 ViewData 나 ViewBag 속성 이 필요 합 니 다.
보기 의존 주입
다음은 비교적 완전한 예 시 를 통 해@using,@model 과@inject 명령 의 용법 을 설명 합 니 다.
우선 서 비 스 를 만 듭 니 다:

public interface IGreeter

{

  string Greet(string firstname, string surname);

}

 

public class Greeter : IGreeter

{

  public string Greet(string firstname, string surname)

  {

    return $"Hello {firstname} {surname}";

  }

}  

Startup 서비스 용기 에 이 서 비 스 를 등록 합 니 다:

public void ConfigureServices(IServiceCollection services)

{

  services.AddScoped<IGreeter, Greeter>();

 

  services.AddMvc();

} 

모형 만 들 기:

public class AboutViewModel

{

  public string Firstname { get; set; }

  public string Surname { get; set; }

} 
컨트롤 러 방법 에서 모델 인 스 턴 스 를 되 돌려 줍 니 다:

public class HomeController : Controller

{

  public IActionResult Index()

  {

    return View();

  }

 

  public IActionResult AboutMe()

  {

    var model = new AboutViewModel

    {

      Firstname = "Tahir",

      Surname = "Naushad"

    };

    return View("Bio", model);

  }

} 

이제 우 리 는 보기에 서 모델 과 서 비 스 를 사용 할 수 있 습 니 다.

 @using RazorEngine.Models

@model AboutViewModel

@inject IGreeter GreeterService

 

<p>@GreeterService.Greet(Model.Firstname, Model.Surname)</p> 
실행,이 때 페이지 표시:

소스 코드 다운로드
원문
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기