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><strong>Hello World</strong></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>
실행,이 때 페이지 표시:소스 코드 다운로드
원문
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
부트스트랩 ASP.NET에서 설정하는 법1) _Layout.cshtml 內 link로 bootstrap 참조 2) Nuget 패키지에서 BootStrap 다운로드 3) 하단 부트스트랩 예제 사이트 참고해서 프로젝트 개발 참고 :...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.