다음을 통해 공유


ASP.NET 웹 페이지 2의 주요 기능

작성자: Microsoft

이 문서에서는 Microsoft WebMatrix 2 RC에 포함된 간단한 웹 프로그래밍 프레임워크인 ASP.NET 웹 페이지 2 RC의 새로운 주요 기능에 대한 개요를 제공합니다.

포함된 내용:

참고

이 항목에서는 WebMatrix를 사용하여 ASP.NET 웹 페이지 2 코드를 사용한다고 가정합니다. 그러나 웹 페이지 1과 마찬가지로 향상된 IntelliSense 기능 및 디버깅을 제공하는 Visual Studio를 사용하여 웹 페이지 2 웹 사이트를 만들 수도 있습니다. Visual Studio에서 웹 페이지를 사용하려면 먼저 Visual Studio 2010 SP1, Visual Web Developer Express 2010 SP1 또는 Visual Studio 11 베타를 설치해야 합니다. 그런 다음 Visual Studio에서 ASP.NET MVC 4 및 Web Pages 2 애플리케이션을 만들기 위한 템플릿 및 도구를 포함하는 ASP.NET MVC 4 베타를 설치합니다.

마지막 업데이트: 2012년 6월 18일

WebMatrix 설치

웹 페이지를 설치하려면 웹 관련 기술을 쉽게 설치하고 구성할 수 있는 무료 애플리케이션인 Microsoft 웹 플랫폼 설치 관리자 사용할 수 있습니다. Web Pages 2 베타를 포함하는 WebMatrix 2 베타를 설치합니다.

  1. 최신 버전의 웹 플랫폼 설치 관리자에 대한 설치 페이지로 이동합니다.

    https://go.microsoft.com/fwlink/?LinkId=226883

    참고

    WebMatrix 1이 이미 설치되어 있는 경우 이 설치는 WebMatrix 2 베타로 업데이트합니다. 동일한 컴퓨터에서 버전 1 또는 2를 사용하여 만든 웹 사이트를 실행할 수 있습니다. 자세한 내용은 웹 페이지 애플리케이션 병렬 실행 섹션을 참조하세요.

  2. 지금 설치를 선택합니다.

    인터넷 Explorer 사용하는 경우 다음 단계로 이동합니다. Mozilla Firefox 또는 Google Chrome과 같은 다른 브라우저를 사용하는 경우 컴퓨터에Webmatrix.exe 파일을 저장하라는 메시지가 표시됩니다. 파일을 저장한 다음 클릭하여 설치 관리자를 시작합니다.

  3. 설치 관리자를 실행하고 설치 단추를 선택합니다. 그러면 WebMatrix 및 웹 페이지가 설치됩니다.

새로운 기능 및 향상된 기능

RC 버전 변경 내용(2012년 6월)

2012년 6월의 RC 버전 릴리스에는 2012년 3월에 릴리스된 베타 버전 새로 고침에서 몇 가지 변경 내용이 있습니다. 이러한 변경 내용은 다음과 같습니다.

  • 도우미에 Validation.AddFormError 메서드가 Validation 추가되었습니다. 이는 유효성 검사를 수동으로 수행하고(예: 쿼리 문자열에 전달된 값의 유효성을 검사) 메서드에서 표시 Html.ValidationSummary 할 수 있는 오류 메시지를 추가하려는 경우에 유용합니다. 자세한 내용은 ASP.NET 웹 페이지(Razor) 사이트의 사용자 입력 유효성 검사에서 사용자로부터 직접 제공되지 않는 데이터 유효성 검사 섹션을 참조하세요.
  • 묶음 및 축소 기능이 코어 ASP.NET 웹 페이지 2 어셈블리에서 제거되었습니다. 따라서 이 문서의 뒷부 Assets 분에 나열된 도우미를 사용할 수 없습니다. 대신 ASP.NET 최적화 NuGet 패키지를 설치해야 합니다. 자세한 내용은 ASP.NET 웹 페이지(Razor) 사이트에서 자산 번들화 및 축소를 참조하세요.
  • ASP.NET 웹 페이지 2를 지원하는 추가 어셈블리가 추가되었습니다. 이 변경의 유일한 눈에 띄는 효과는 사이트를 만들거나 호스팅 공급자에 사이트를 배포한 후 사이트의 bin 폴더에 더 많은 어셈블리가 표시될 수 있다는 것입니다.

베타 버전 변경 내용(2012년 2월)

2012년 2월에 릴리스된 베타 버전은 2011년 12월에 출시된 베타 버전에서 몇 가지 변경 내용만 있습니다. 이러한 변경 내용은 다음과 같습니다.

  • 이제 Razor는 조건부 특성을 지원합니다. HTML 요소에서 특성을 서버 코드 false 에서 또는 null로 확인되는 값으로 설정하면 ASP.NET 특성을 전혀 렌더링하지 않습니다. 예를 들어 검사 상자에 대해 다음과 같은 태그가 있다고 상상해 보세요.

    <input type="checkbox"
    name="check1"
    value="check1"
    checked="@checked1" />
    

    checked1 값이 또는 null로 확인 false 되면 특성이 checked 렌더링되지 않습니다. 이는 주요 변경 내용입니다.

  • 메서드의 Validation.GetHtml 이름이 로 변경 Validation.For되었습니다. 이것은 호환성이 손상되는 변경입니다. Validation.GetHtml 는 베타 릴리스에서 작동하지 않습니다.

  • 이제 함수를 사용하지 않고 사이트 루트를 ~ 참조하는 연산자를 태그에 포함할 Href 수 있습니다. 즉, Razor 파서는 이제 에 대한 명시적 메서드 호출 Href없이 연산자를 찾고 resolve ~ 수 있습니다. 메서드는 Href 여전히 작동하므로 호환성이 손상되는 변경이 아닙니다.

    예를 들어 이전에 다음과 같은 태그가 있는 경우:

    <a href="@Href("~/Default.cshtml")">Home</a>

    이제 다음과 같이 태그를 사용할 수 있습니다.

    <a href="~/Default.cshtml">Home</a>

  • Scripts 자산(리소스) 관리에 대한 도우미가 다음과 같이 약간 다른 메서드가 Assets 있는 도우미로 대체되었습니다.

    • 의 경우 를 사용합니다.Scripts.AddAssets.AddScript

    • 의 경우 를 사용합니다.Scripts.GetScriptTagsAssets.GetScripts

      이것은 호환성이 손상되는 변경입니다. 클래스는 Scripts 베타 릴리스에서 사용할 수 없습니다. 자산 관리를 사용하는 이 문서의 코드 예제가 이 변경 내용으로 업데이트되었습니다.

새 사이트 및 업데이트된 사이트 서식 파일 사용

시작 사이트 템플릿은 기본적으로 웹 페이지 2에서 실행되도록 업데이트되었습니다. 또한 다음과 같은 새로운 기능이 포함되어 있습니다.

  • 모바일 친화적인 페이지 렌더링. 시작 사이트는 CSS 스타일 및 @media 선택기를 사용하여 모바일 디바이스 화면을 포함하여 더 작은 화면에서 페이지의 향상된 렌더링을 제공합니다.
  • 향상된 멤버 자격 및 인증 옵션. 사용자가 Twitter, Facebook 및 Windows Live와 같은 다른 소셜 네트워킹 사이트의 계정을 사용하여 사이트에 로그인하도록 할 수 있습니다. 자세한 내용은 OAuth 및 OpenID를 사용하여 Facebook 및 기타 사이트에서 로그인 사용 섹션을 참조하세요.
  • HTML5 요소.

개인 사이트 서식 파일을 사용하면 개인 블로그, 사진 페이지 및 Twitter 페이지가 포함된 웹 사이트를 만들 수 있습니다. 다음을 수행하여 개인 사이트 서식 파일을 기반으로 사이트를 사용자 지정할 수 있습니다.

  • 레이아웃 파일(_SiteLayout.cshtml) 및 스타일 파일(Site.css)을 편집하여 사이트의 모양을 변경합니다.
  • 사이트에 기능을 추가하는 NuGet 패키지를 설치합니다. ASP.NET 웹 도우미 라이브러리를 포함하여 패키지를 설치하는 방법에 대한 자세한 내용은 도우미 설치에 대한 자습서를 참조하세요.

개인 사이트 템플릿에 액세스하려면 WebMatrix 빠른 시작 화면에서 템플릿을 선택합니다.

topseven-personalsite-1

템플릿 대화 상자에서 개인 사이트 서식 파일을 선택합니다.

topseven-personalsite-2

개인 사이트 서식 파일의 방문 페이지에서 링크를 따라 블로그, Twitter 페이지 및 사진 페이지를 설정할 수 있습니다.

topseven-personalsite-3

사용자 입력 유효성 검사

웹 페이지 1에서 제출된 양식에 대한 사용자 입력의 유효성을 검사하려면 클래스를 System.Web.WebPages.Html.ModelState 사용합니다. (데이터 작업이라는 웹 페이지 1 자습서의 여러 코드 샘플에 설명되어 있습니다.) 웹 페이지 2에서는 이 방법을 계속 사용할 수 있습니다. 그러나 웹 페이지 2는 사용자 입력의 유효성을 검사하기 위한 향상된 도구도 제공합니다.

  • System.Web.WebPages.Validator를 비롯한 System.Web.WebPages.ValidationHelper 새로운 유효성 검사 클래스를 사용하면 몇 줄의 코드로 강력한 유효성 검사 작업을 수행할 수 있습니다.
  • 필요에 따라 유효성 검사 오류를 검사 위해 서버 왕복을 요구하는 대신 사용자에게 즉각적인 피드백을 제공하는 클라이언트 쪽 유효성 검사입니다. (보안상의 이유로 클라이언트에서 검사를 미리 수행한 경우에도 서버에서 유효성 검사가 수행됩니다.)

새 유효성 검사 기능을 사용하려면 다음을 수행합니다.

페이지의 코드에서 도우미의 메서드 Validation 를 사용하여 유효성을 검사할 요소를 등록합니다. , Validation.RequireFields (필요한 여러 요소를 등록하려면) 또는 Validation.AddValidation.RequireField입니다. 메서드를 Add 사용하면 데이터 형식 검사, 다른 필드의 항목 비교, 문자열 길이 검사 및 패턴(정규식 사용)과 같은 다른 형식의 유효성 검사 검사를 지정할 수 있습니다. 몇 가지 예제는 다음과 같습니다.

Validation.RequireField("text1");
Validation.RequireField("text1", "The text1 field is required");
Validation.RequireFields("text1", "text2", "text3");

Validation.Add("text1", Validation.StringLength(5));
Validation.Add("textDate", Validation.DateTime("Enter a date"));
Validation.Add("textCount", Validation.Integer("Enter a number"));
Validation.Add("textCount",
Validation.Range(1, 10, "Enter a value between 1 and 10"));

필드별 오류를 표시하려면 유효성을 검사하는 각 요소에 대한 태그에서 를 호출 Html.ValidationMessage 합니다.

<input type="text" name="course"
value="@Request["course"]" />
@Html.ValidationMessage("course")

페이지의 Html.ValidationSummary 모든 오류에 대한 요약(<ul>목록)을 표시하려면 태그에서 다음을 수행합니다.

@Html.ValidationSummary()

이러한 단계는 서버 쪽 유효성 검사를 구현하기에 충분합니다. 클라이언트 쪽 유효성 검사를 추가하려면 다음을 수행합니다.

웹 페이지의 섹션 내에 <head> 다음 스크립트 파일 참조를 추가합니다. 처음 두 스크립트 참조는 CDN(콘텐츠 배달 네트워크) 서버의 원격 파일을 가리킵니다. 세 번째 참조는 로컬 스크립트 파일을 가리킵니다. 프로덕션 앱은 CDN을 사용할 수 없는 경우 대체를 구현해야 합니다. 대체를 테스트합니다.

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.8.1/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

jquery.validate.unobtrusive.min.js 라이브러리의 로컬 복사본을 가져오는 가장 쉬운 방법은 사이트 템플릿(예: 시작 사이트) 중 하나를 기반으로 새 웹 페이지 사이트를 만드는 것입니다. 템플릿에서 만든 사이트에는 해당 Scripts 폴더에 jquery.validate.unobtrusive.js 파일이 포함되어 있습니다. 이 파일은 사이트에 복사할 수 있습니다.

웹 사이트에서 _SiteLayout 페이지를 사용하여 페이지 레이아웃을 제어하는 경우 모든 콘텐츠 페이지에서 유효성 검사를 사용할 수 있도록 해당 페이지에 이러한 스크립트 참조를 포함할 수 있습니다. 특정 페이지에서만 유효성 검사를 수행하려는 경우 자산 관리자를 사용하여 해당 페이지에만 스크립트를 등록할 수 있습니다. 이렇게 하려면 각 스크립트 파일의 유효성을 검사하고 참조하려는 페이지에서 를 호출 Assets.AddScript(path) 합니다. 그런 다음, 등록된 태그를 렌더링하기 Assets.GetScripts 위해 _SiteLayout 페이지에서 에 대한 호출을 <script> 추가합니다. 자세한 내용은 Assets Manager에 스크립트 등록 섹션을 참조하세요.

개별 요소에 대한 태그에서 메서드를 호출합니다 Validation.For . 이 메서드는 클라이언트 쪽 유효성 검사를 제공하기 위해 jQuery가 후크할 수 있는 특성을 내보낸다. 예:

<input type="text" name="course"
value="@Request["course"]"
@Validation.For("course")
/>
@Html.ValidationMessage("course")

다음 예제에서는 양식에서 사용자 입력의 유효성을 검사하는 페이지를 보여 줍니다. 이 유효성 검사 코드를 실행하고 테스트하려면 다음을 수행합니다.

  1. 시작 사이트 템플릿과 같은 Scripts 폴더가 포함된 WebMatrix 2 사이트 템플릿 중 하나를 사용하여 새 웹 사이트를 만듭니다.
  2. 새 사이트에서 새 .cshtml 페이지를 만들고 페이지의 내용을 다음 코드로 바꿉니다.
  3. 브라우저에서 페이지를 실행합니다. 유효하고 잘못된 값을 입력하여 유효성 검사에 미치는 영향을 확인합니다. 예를 들어 필수 필드를 비워 두거나 크레딧 필드에 문자를 입력 합니다 .
@{
// Specify what fields users must fill in.
Validation.RequireFields("course", "professorname", "credits");
// Add validation criteria.  Here, require that input to Credits is an integer.
Validation.Add("credits", Validator.Integer());

if (IsPost)  {
// Wrap the postback code with a validation check.
if (Validation.IsValid()) {
    var course = Request["course"];
    var professorName = Request["professorname"];
    var credits = Request["credits"];
    // Display valid input values.
    <text>
        You entered: <br />
        Class: @course <br />
        Professor: @professorName <br />
        Credits: @credits <br />
    </text>
}
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Testing Validation in ASP.NET Web Pages version 2</title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.js"></script>
<script  src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.8.1/jquery.validate.min.js"></script>
<script src="@Href("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
</head>
<body>
<form method="post" action="">
<!-- Display a summary message about any validation issues. -->
@Html.ValidationSummary()
<fieldset>
  <legend>Add Class</legend>
<div>
  <label for="Course">Class:</label>
  <!-- Validation.For("course") adds validation attributes to the input element. -->
  <input type="text" name="Course" value="@Request["course"]"  @Validation.For("course") />

  <!-- Display a field-specific message about validation issues. -->
  @Html.ValidationMessage("course")
</div>

<div>
  <label for="ProfessorName">Professor:</label>
  <input type="text" name="ProfessorName" value="@Request["professorname"]"
      @Validation.For("professorname") />
  @Html.ValidationMessage("professorname")
</div>

<div>
  <label for="Credits">Credits:</label>
  <input type="text" name="Credits" value="@Request["credits"]" @Validation.For("credits") />
  @Html.ValidationMessage("credits")
</div>

<div>
  <label>&nbsp;</label>
  <input type="submit" value="Submit" class="submit" />
</div>
  </fieldset>
</form>
</body>
</html>

사용자가 유효한 입력을 제출할 때의 페이지는 다음과 같습니다.

topSeven-valid-1

다음은 사용자가 필수 필드가 비어 있는 상태로 제출하는 페이지입니다.

topSeven-valid-2

다음은 사용자가 크레딧 필드의 정수 이외의 항목으로 제출하는 페이지 입니다 .

topSeven-valid-3

자세한 내용은 다음 블로그 게시물을 참조하세요.

Assets Manager를 사용하여 스크립트 등록

자산 관리자는 서버 코드에서 클라이언트 스크립트를 등록하고 렌더링하는 데 사용할 수 있는 새로운 기능입니다. 이 기능은 런타임에 단일 페이지로 결합된 여러 파일(예: 레이아웃 페이지, 콘텐츠 페이지, 도우미 등)의 코드를 사용하는 경우에 유용합니다. 자산 관리자는 소스 파일을 조정하여 호출된 코드 파일이나 호출된 횟수에 관계없이 렌더링된 페이지에서 스크립트 파일이 정확하고 효율적으로 참조되도록 합니다. 또한 자산 관리자는 적절한 위치에 태그를 렌더링 <script> 하여 렌더링하는 동안 스크립트를 다운로드하지 않고 페이지가 빠르게 로드되고 렌더링이 완료되기 전에 스크립트가 호출되는 경우 발생할 수 있는 오류를 방지할 수 있습니다.

예를 들어 JavaScript 파일을 호출하는 사용자 지정 도우미를 만들고 콘텐츠 페이지 코드의 세 위치에서 이 도우미를 호출한다고 가정합니다. 자산 관리자를 사용하여 도우미에 스크립트 호출을 등록하지 않으면 모두 동일한 스크립트 파일을 가리키는 세 가지 태그 <script> 가 렌더링된 페이지에 표시됩니다. 또한 렌더링된 페이지에 태그가 <script> 삽입되는 위치에 따라 스크립트가 페이지가 완전히 로드되기 전에 특정 페이지 요소에 액세스하려고 하면 오류가 발생할 수 있습니다. 자산 관리자를 사용하여 스크립트를 등록하는 경우 이러한 문제를 방지할 수 있습니다.

다음을 수행하여 자산 관리자에 스크립트를 등록할 수 있습니다.

  • 스크립트를 참조해야 하는 코드에서 메서드를 호출합니다 Assets.AddScript .

  • _SiteLayout 페이지에서 메서드를 Assets.GetScripts 호출하여 태그를 <script> 렌더링합니다.

    참고

    호출을 Assets.GetScripts_SiteLayout 페이지의 요소에서 <body> 마지막 항목으로 배치합니다. 이렇게 하면 페이지 로드 속도가 빨라지고 스크립트 오류를 방지할 수 있습니다.

다음 예제에서는 자산 관리자의 작동 방식을 보여 줍니다. 코드에는 다음 항목이 포함됩니다.

  • 라는 MakeNote사용자 지정 도우미입니다. 이 도우미는 테두리로 스타일이 지정된 요소를 둘러싸 div 고 "Note:"를 추가하여 상자 안에 문자열을 렌더링합니다. 도우미는 또한 메모에 런타임 동작을 추가하는 JavaScript 파일을 호출합니다. 도우미는 태그를 사용하여 스크립트를 <script> 참조하는 대신 를 호출 Assets.AddScript 하여 스크립트를 등록합니다.
  • JavaScript 파일입니다. 도우미가 호출하는 파일이며 이벤트 중에 mouseover 메모 항목의 글꼴 크기를 일시적으로 늘립니다.
  • _SiteLayout 페이지를 참조하는 콘텐츠 페이지는 본문에 일부 콘텐츠를 렌더링한 다음 도우미를 호출합니다MakeNote.
  • _SiteLayout 페이지입니다. 이 페이지에서는 공통 머리글 및 페이지 레이아웃 구조를 제공합니다. 또한 자산 관리자가 페이지에서 스크립트 호출을 Assets.GetScripts렌더링하는 방법인 에 대한 호출도 포함됩니다.

예제를 실행하려면

  1. 빈 웹 페이지 2 웹 사이트를 만듭니다. WebMatrix 빈 사이트 템플릿을 사용할 수 있습니다.
  2. 사이트에 Scripts 라는 폴더를 만듭니다.
  3. Scripts 폴더에서 Test.js이라는 파일을 만들고 예제에서Test.js 콘텐츠를 복사하고 파일을 저장합니다.
  4. 사이트에 App_Code 폴더를 만듭니다.
  5. App_Code 폴더에서 Helpers.cshtml이라는 파일을 만들고 예제 코드를 복사한 다음 루트 폴더의 App_Code 폴더에 저장합니다.
  6. 사이트의 루트 폴더에서 _SiteLayout.cshtml 이라는 파일을 만들고, 예제를 복사하고, 파일을 저장합니다.
  7. 사이트 루트에서 ContentPage.cshtml이라는 파일을 만들고 예제 코드를 추가하고 저장합니다.
  8. 브라우저에서 ContentPage 를 실행합니다. 도우미에 MakeNote 전달한 문자열은 박스형 메모로 렌더링됩니다.
  9. 노트 위에 마우스 포인터를 전달합니다. 스크립트는 메모의 글꼴 크기를 일시적으로 늘입니다.
  10. 렌더링된 페이지의 원본을 봅니다. 를 호출한 Assets.GetScripts위치 때문에 Test.js 호출하는 렌더링된 <script> 태그는 페이지 본문의 마지막 항목입니다.

Test.js

function UpdateNoteStyle(id) {
var theNote = document.getElementById(id);
theNote.style.fontSize = "150%";
}
function ReturnNoteStyle(id) {
var theNote = document.getElementById(id);
theNote.style.fontSize = "inherit";
}

Helpers.cshtml

@helper MakeNote(string content, string noteid) {
Assets.AddScript("~/Scripts/Test.js");

<div id="@noteid" style="border: 1px solid black; width: 90%; padding: 5px; margin-left: 15px;"
 onmouseover="UpdateNoteStyle('@noteid')" onmouseout="ReturnNoteStyle('@noteid')">
  <p>
  <strong>Note</strong>&nbsp;&nbsp; @content
   </p>
</div>
}

_SiteLayout.cshtml

<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<header>
    <div class="content-wrapper">
        <h1>Contoso Ltd.</h1>
    </div>
</header>
<div id="body">
    <section class="content-wrapper main-content clear-fix">
        @RenderBody()
    </section>
</div>
@Assets.GetScripts()
</body>
</html>

ContentPage.cshtml

@{
Layout = "~/_SiteLayout.cshtml";
}
<p>
Nullam scelerisque facilisis placerat. Fusce a augue
erat, malesuada euismod dui.
</p>
@Helpers.MakeNote("Latin is fun to translate.", "note1")

다음 스크린샷은 노트 위에 마우스 포인터를 놓을 때 브라우저의 ContentPage.cshtml 을 보여 줍니다.

topSeven-resmgr-1

OAuth 및 OpenID를 사용하여 Facebook 및 기타 사이트에서 로그인 사용

웹 페이지 2는 멤버 자격 및 인증에 대한 향상된 옵션을 제공합니다. 향상된 기본 새로운 OAuthOpenID 공급자가 있다는 것입니다. 이러한 공급자를 사용하여 사용자가 Facebook, Twitter, Windows Live, Google 및 Yahoo의 기존 자격 증명을 사용하여 사이트에 로그인하도록 할 수 있습니다. 예를 들어 Facebook 계정을 사용하여 로그인하려면 사용자가 Facebook 아이콘을 선택하여 사용자 정보를 입력하는 Facebook 로그인 페이지로 리디렉션할 수 있습니다. 그러면 Facebook 로그인을 사이트의 계정과 연결할 수 있습니다. 웹 페이지 멤버 자격 기능과 관련된 향상된 기능은 사용자가 웹 사이트의 단일 계정과 여러 로그인(소셜 네트워킹 사이트의 로그인 포함)을 연결할 수 있다는 것입니다.

이 이미지는 사용자가 Facebook, Twitter 또는 Windows Live 아이콘을 선택하여 외부 계정으로 로그인할 수 있는 시작 사이트 템플릿의 로그인 페이지를 보여줍니다.

topSeven-oauth-1

몇 줄의 코드만 사용하여 OAuth 및 OpenID 멤버 자격을 사용하도록 설정할 수 있습니다. OAuth 및 OpenID 공급자와 함께 작업하는 데 사용하는 메서드 및 속성이 클래스에 WebMatrix.Security.OAuthWebSecurity 있습니다.

그러나 코드를 사용하여 다른 사이트의 로그인을 사용하도록 설정하는 대신 새 공급자를 시작하는 권장 방법은 WebMatrix 2 베타에 포함된 새 시작 사이트 템플릿을 사용하는 것입니다. 시작 사이트 템플릿에는 로그인 페이지, 멤버 자격 데이터베이스 및 사용자가 로컬 자격 증명 또는 다른 사이트의 자격 증명을 사용하여 사이트에 로그인할 수 있도록 하는 데 필요한 모든 코드가 포함된 전체 멤버 자격 인프라가 포함되어 있습니다.

OAuth 및 OpenID 공급자를 사용하여 로그인을 사용하도록 설정하는 방법

이 섹션에서는 사용자가 외부 사이트(Facebook, Twitter, Windows Live, Google 또는 Yahoo)에서 시작 사이트 템플릿을 기반으로 하는 사이트에 로그인하도록 하는 방법의 예를 제공합니다. 시작 사이트를 만든 후 이 작업을 수행합니다(자세한 내용은 다음).

  • OAuth 공급자(Facebook, Twitter 및 Windows Live)를 사용하는 사이트의 경우 외부 사이트에 애플리케이션을 만듭니다. 이렇게 하면 해당 사이트에 대한 로그인 기능을 호출하는 데 필요한 애플리케이션 키가 제공됩니다. OpenID 공급자(Google, Yahoo)를 사용하는 사이트의 경우 애플리케이션을 만들 필요가 없습니다. 이러한 모든 사이트의 경우 로그인하고 개발자 애플리케이션을 만들려면 계정이 있어야 합니다.

    참고

    Windows Live 애플리케이션은 작동하는 웹 사이트에 대한 라이브 URL만 허용하므로 로그인 테스트에 로컬 웹 사이트 URL을 사용할 수 없습니다.

  • 적절한 인증 공급자를 지정하고 사용하려는 사이트에 로그인을 제출하기 위해 웹 사이트에서 몇 가지 파일을 편집합니다.

Google 및 Yahoo 로그인을 사용하도록 설정하려면 다음을 수행합니다.

  1. 웹 사이트에서 _AppStart.cshtml 페이지를 편집하고 메서드를 호출 WebSecurity.InitializeDatabaseConnection 한 후 Razor 코드 블록에 다음 두 줄의 코드를 추가합니다. 이 코드를 사용하면 Google 및 Yahoo OpenID 공급자를 모두 사용할 수 있습니다.

    OAuthWebSecurity.RegisterOpenIDClient(BuiltInOpenIDClient.Google);
    OAuthWebSecurity.RegisterOpenIDClient(BuiltInOpenIDClient.Yahoo);
    
  2. ~/Account/Login.cshtml 페이지의 끝 부분에 있는 다음 <fieldset> 태그 블록에서 주석을 제거합니다. 코드의 주석 처리를 제거하려면 앞에 오는 문자를 제거하고 @* 블록을 따릅니다 <fieldset> . 결과 코드 블록은 다음과 같습니다.

    <fieldset>
    <legend>Log in using another service</legend>
    <input type="submit" name="provider" id="facebook" value="Facebook" title="Log in using your Facebook account." />
    <input type="submit" name="provider" id="twitter" value="Twitter" title="Log in using your Twitter account." />
    <input type="submit" name="provider" id="windowsLive" value="WindowsLive" title="Log in using your Windows Live account." />
    </fieldset>
    
  3. <input>~/Account/Login.cshtml 페이지의 그룹에 Google 또는 Yahoo 공급자 <fieldset> 에 대한 요소를 추가합니다. Google 및 Yahoo 모두에 대한 요소가 포함된 <input> 업데이트된 <fieldset> 그룹은 다음 예제와 같습니다.

    <fieldset>
    <legend>Log in using another service</legend>
    <input type="submit" name="provider" id="facebook" value="Facebook" title="Log in using your Facebook account." />
    <input type="submit" name="provider" id="twitter" value="Twitter" title="Log in using your Twitter account." />
    <input type="submit" name="provider" id="windowsLive" value="WindowsLive" title="Log in using your Windows Live account." />
    <input type="submit" name="provider" id="yahoo" value="Yahoo" title="Log in using your Yahoo account." />
    <input type="submit" name="provider" id="google" value="Google" title="Log in using your Google account." />
    </fieldset>
    
  4. ~/Account/AssociateServiceAccount.cshtml 페이지에서 Google 또는 Yahoo <fieldset> 에 대한 요소를 파일의 끝 부분에 있는 그룹에 추가 <input> 합니다. ~/Account/Login.cshtml 페이지의 섹션에 방금 추가 <fieldset> 한 것과 동일한 <input> 요소를 복사할 수 있습니다.

    사용자가 다른 사이트의 여러 로그인을 웹 사이트의 단일 계정과 연결할 수 있는 페이지를 만들려는 경우 시작 사이트 템플릿의 ~/Account/AssociateServiceAccount.cshtml 페이지를 사용할 수 있습니다.

이제 Google 및 Yahoo 로그인을 테스트할 수 있습니다.

  1. 사이트의 default.cshtml 페이지를 실행하고 로그인 단추를 선택합니다.

  2. 로그인 페이지의 다른 서비스로 로그인 사용 섹션에서 Google 또는 Yahoo 제출 단추를 선택합니다. 이 예제에서는 Google 로그인을 사용합니다.

    웹 페이지는 요청을 Google 로그인 페이지로 리디렉션합니다.

    스크린샷은 Google 로그인 페이지로 리디렉션하는 웹 페이지를 보여줍니다.

  3. 기존 Google 계정에 대한 자격 증명을 입력합니다.

  4. Google에서 Localhost가 계정의 정보를 사용하도록 허용할지 묻는 메시지가 표시되면 허용을 클릭합니다.

    이 코드는 Google 토큰을 사용하여 사용자를 인증한 다음 웹 사이트의 이 페이지로 돌아갑니다. 이 페이지에서는 사용자가 Google 로그인을 웹 사이트의 기존 계정과 연결하거나 사이트에 새 계정을 등록하여 외부 로그인을 연결할 수 있습니다.

    스크린샷은 레지스터 페이지를 보여줍니다.

  5. 연결 단추를 선택합니다. 브라우저가 애플리케이션의 홈페이지로 돌아갑니다.

    스크린샷은 애플리케이션의 홈페이지를 보여줍니다.

    스크린샷은 애플리케이션의 홈페이지의 다른 버전을 보여줍니다.

Facebook 로그인을 사용하도록 설정하려면 다음을 수행합니다.

  1. Facebook 개발자 사이트(아직 로그인하지 않은 경우 로그인)로 이동합니다.

  2. 새 앱 만들기 단추를 선택한 다음 프롬프트에 따라 이름을 지정하고 새 애플리케이션을 만듭니다.

  3. 앱이 Facebook과 통합되는 방법 선택 섹션에서 웹 사이트 섹션을 선택합니다.

  4. 사이트 URL 필드를 사이트의 URL(예: http://www.example.com)으로 채웁니다. 도메인 필드는 선택 사항입니다. 이를 사용하여 전체 도메인(예: example.com)에 대한 인증을 제공할 수 있습니다.

    참고

    과 같은 http://localhost:12345 URL을 사용하여 로컬 컴퓨터에서 사이트를 실행하는 경우(숫자가 로컬 포트 번호인 경우) 사이트를 테스트하기 위해 사이트 URL 필드에 이 값을 추가할 수 있습니다. 그러나 로컬 사이트의 포트 번호가 변경될 때마다 애플리케이션의 사이트 URL 필드를 업데이트해야 합니다.

  5. 변경 내용 저장 단추를 선택합니다.

  6. 탭을 다시 선택한 다음 애플리케이션의 시작 페이지를 봅니다.

  7. 애플리케이션의 앱 ID앱 비밀 값을 복사하여 임시 텍스트 파일에 붙여넣습니다. 이러한 값을 웹 사이트 코드의 Facebook 공급자에게 전달합니다.

  8. Facebook 개발자 사이트를 종료합니다.

이제 사용자가 자신의 Facebook 계정을 사용하여 사이트에 로그인할 수 있도록 웹 사이트의 두 페이지를 변경합니다.

  1. 웹 사이트에서 _AppStart.cshtml 페이지를 편집하고 Facebook OAuth 공급자에 대한 코드 주석 처리를 제거합니다. 주석 처리되지 않은 코드 블록은 다음과 같습니다.

    OAuthWebSecurity.RegisterOAuthClient(
    BuiltInOAuthClient.Facebook,
    consumerKey: "",   // for Facebook, consumerKey is called AppID in the SDK
    consumerSecret: "");
    
  2. Facebook 애플리케이션에서 앱 ID 값을 매개 변수의 consumerKey 값으로 복사합니다(따옴표 내부).

  3. Facebook 애플리케이션에서 앱 비밀 값을 매개 변수 값으로 consumerSecret 복사합니다.

  4. 파일을 저장하고 닫습니다.

  5. ~/Account/Login.cshtml 페이지를 편집하고 페이지 끝 근처의 블록에서 <fieldset> 주석을 제거합니다. 코드의 주석 처리를 제거하려면 앞에 오는 문자를 제거하고 @* 블록을 따릅니다 <fieldset> . 주석이 제거된 코드 블록은 다음과 같습니다.

    <fieldset>
    <legend>Log in using another service</legend>
    <input type="submit" name="provider" id="facebook" value="Facebook" title="Log in using your Facebook account." />
    <input type="submit" name="provider" id="twitter" value="Twitter" title="Log in using your Twitter account." />
    <input type="submit" name="provider" id="windowsLive" value="WindowsLive" title="Log in using your Windows Live account." />
    </fieldset>
    
  6. 파일을 저장하고 닫습니다.

이제 Facebook 로그인을 테스트할 수 있습니다.

  1. 사이트의 default.cshtml 페이지를 실행하고 로그인 단추를 선택합니다.

  2. 로그인 페이지의 다른 서비스를 사용하여 로그인 섹션의 Facebook 아이콘을 선택합니다.

    웹 페이지는 요청을 Facebook 로그인 페이지로 리디렉션합니다.

    스크린샷은 등록 페이지를 보여줍니다.

  3. Facebook 계정에 로그인합니다.

    이 코드는 Facebook 토큰을 사용하여 사용자를 인증한 다음, Facebook 로그인을 사이트의 로그인과 연결할 수 있는 페이지로 돌아갑니다. 사용자 이름 또는 전자 메일 주소가 양식의 Email 필드에 채워집니다.

    스크린샷은 등록 페이지의 사용자 이름 또는 전자 메일 필드를 보여줍니다.

  4. 연결 단추를 선택합니다.

    브라우저가 홈 페이지로 돌아가면 로그인됩니다.

    홈페이지로 돌아가는 브라우저를 보여주는 스크린샷.

Twitter 로그인을 사용하도록 설정하려면 다음을 수행합니다.

  1. Twitter 개발자 사이트로 이동합니다.

  2. 앱 만들기 링크를 선택한 다음 사이트에 로그인합니다.

  3. 애플리케이션 만들기 양식에서 이름설명 필드를 입력합니다.

  4. WebSite 필드에 사이트의 URL(예: http://www.example.com)을 입력합니다.

    참고

    사이트를 로컬로 테스트하는 경우(예: http://localhost:12345URL 사용) Twitter에서 URL을 수락하지 않을 수 있습니다. 그러나 로컬 루프백 IP 주소(예 http://127.0.0.1:12345: )를 사용할 수 있습니다. 이렇게 하면 애플리케이션을 로컬로 테스트하는 프로세스가 간소화됩니다. 그러나 로컬 사이트의 포트 번호가 변경될 때마다 애플리케이션의 WebSite 필드를 업데이트해야 합니다.

  5. 콜백 URL 필드에 사용자가 Twitter에 로그인한 후 돌아갈 웹 사이트의 페이지에 대한 URL을 입력합니다. 예를 들어 로그인한 상태 인식할 시작 사이트의 홈페이지로 사용자를 보내려면 WebSite 필드에 입력한 것과 동일한 URL을 입력합니다.

  6. 약관에 동의하고 Twitter 애플리케이션 만들기 단추를 선택합니다.

  7. 내 애플리케이션 방문 페이지에서 만든 애플리케이션을 선택합니다.

  8. 세부 정보 탭에서 아래쪽으로 스크롤하여 내 액세스 토큰 만들기 단추를 선택합니다.

  9. 세부 정보 탭에서 애플리케이션의 소비자 키소비자 비밀 값을 복사하여 임시 텍스트 파일에 붙여넣습니다. 이러한 값을 웹 사이트 코드의 Twitter 공급자에게 전달합니다.

  10. Twitter 사이트를 종료합니다.

이제 사용자가 자신의 Twitter 계정을 사용하여 사이트에 로그인할 수 있도록 웹 사이트의 두 페이지를 변경합니다.

  1. 웹 사이트에서 _AppStart.cshtml 페이지를 편집하고 Twitter OAuth 공급자에 대한 코드 주석 처리를 제거합니다. 주석 처리되지 않은 코드 블록은 다음과 같습니다.

    OAuthWebSecurity.RegisterOAuthClient(
    BuiltInOAuthClient.Twitter,
    consumerKey: "",
    consumerSecret: "");
    
  2. Twitter 애플리케이션의 소비자 키 값을 매개 변수의 consumerKey 값으로 복사합니다(따옴표 내부).

  3. Twitter 애플리케이션의 소비자 비밀 값을 매개 변수 값 consumerSecret 으로 복사합니다.

  4. 파일을 저장하고 닫습니다.

  5. ~/Account/Login.cshtml 페이지를 편집하고 페이지 끝 근처의 블록에서 <fieldset> 주석을 제거합니다. 코드의 주석 처리를 제거하려면 앞에 오는 문자를 제거하고 @* 블록을 따릅니다 <fieldset> . 주석이 제거된 코드 블록은 다음과 같습니다.

    <fieldset>
    <legend>Log in using another service</legend>
    <input type="submit" name="provider" id="facebook" value="Facebook" title="Log in using your Facebook account." />
    <input type="submit" name="provider" id="twitter" value="Twitter" title="Log in using your Twitter account." />
    <input type="submit" name="provider" id="windowsLive" value="WindowsLive" title="Log in using your Windows Live account." />
    </fieldset>
    
  6. 파일을 저장하고 닫습니다.

이제 Twitter 로그인을 테스트할 수 있습니다.

  1. 사이트의 default.cshtml 페이지를 실행하고 로그인 단추를 선택합니다.

  2. 로그인 페이지의 로그인에 다른 서비스 사용 섹션에서 Twitter 아이콘을 선택합니다.

    웹 페이지는 사용자가 만든 애플리케이션에 대한 Twitter 로그인 페이지로 요청을 리디렉션합니다.

    스크린샷은 Twitter 로그인 페이지로 리디렉션되는 웹 페이지를 보여줍니다.

  3. Twitter 계정에 로그인합니다.

  4. 이 코드는 Twitter 토큰을 사용하여 사용자를 인증한 다음, 로그인을 웹 사이트 계정과 연결할 수 있는 페이지로 돌아갑니다. 이름 또는 전자 메일 주소가 양식의 Email 필드로 채워집니다.

    스크린샷은 양식에 입력되는 이름 또는 전자 메일 주소를 보여줍니다.

  5. 연결 단추를 선택합니다.

    브라우저가 홈페이지로 돌아가면 로그인됩니다.

    홈 페이지로 돌아가는 브라우저와 로그인 중인 사용자를 보여주는 스크린샷.

지도 도우미를 사용하여 지도 추가

웹 페이지 2에는 웹 페이지 사이트에 대한 추가 기능 패키지인 ASP.NET 웹 도우미 라이브러리에 대한 추가 기능이 포함되어 있습니다. 이 중 하나는 클래스에서 제공하는 매핑 구성 요소입니다 Microsoft.Web.Helpers.Maps . 클래스를 Maps 사용하여 주소 또는 경도 및 위도 좌표 집합에 따라 맵을 생성할 수 있습니다. 클래스를 Maps 사용하면 Bing, Google, MapQuest 및 Yahoo를 비롯한 인기 있는 지도 엔진으로 직접 호출할 수 있습니다.

웹 사이트에서 새 Maps 클래스를 사용하려면 먼저 웹 도우미 라이브러리 버전 2를 설치해야 합니다. 이렇게 하려면 현재 릴리스된 버전의 ASP.NET Web Helpers 라이브러리 를 설치하고 버전 2를 설치하기 위한 지침으로 이동합니다.

페이지에 매핑을 추가하는 단계는 호출하는 맵 엔진에 관계없이 동일합니다. 매핑 페이지에 JavaScript 파일 참조를 추가한 다음 페이지에서 태그를 렌더링 <script> 하는 호출을 추가합니다. 그런 다음 매핑 페이지에서 사용하려는 맵 엔진을 호출합니다.

다음 예제에서는 주소를 기반으로 맵을 렌더링하는 페이지와 경도 및 위도 좌표를 기반으로 지도를 렌더링하는 다른 페이지를 만드는 방법을 보여 줍니다. 주소 매핑 예제에서는 Google Maps를 사용하고 좌표 매핑 예제는 Bing 지도 사용합니다. 코드에서 다음 요소를 확인합니다.

  • 두 매핑 페이지의 맨 위에 있는 에 대한 호출 Assets.AddScript 입니다. 이 메서드는 시작 사이트 템플릿에 포함되고 클래스에 필요한 jquery-1.6.2.min.js 파일에 대한 참조를 Maps 추가합니다.
  • 레이아웃 파일에서 Assets.GetScripts 메서드에 대한 호출입니다. 이 메서드는 <script> 두 매핑 페이지에서 태그를 렌더링합니다.
  • 매핑 페이지의 및 @Maps.GetBingHtml 메서드에 대한 호출 @Maps.GetGoogleHtml 입니다. 주소를 매핑하려면 주소 문자열을 전달해야 합니다. 좌표를 매핑하려면 경도 및 위도 좌표를 전달해야 합니다. Bing 지도 엔진의 경우 키도 전달해야 합니다(Bing 지도 개발자 사이트에 등록하여 무료로 얻을 수 있음). 다른 맵 엔진에 대한 메서드는 비슷한 방식으로 작동합니다(@Maps.GetYahooHtml, @Maps.GetMapQuestHtml).

매핑 페이지를 만들려면 다음을 수행합니다.

  1. 시작 사이트 템플릿을 기반으로 웹 사이트를 만듭니다.

  2. 사이트 루트에 MapAddress.cshtml 이라는 파일을 만듭니다. 이 페이지에서는 전달한 주소를 기반으로 맵을 생성합니다.

  3. 다음 코드를 파일에 복사하여 기존 콘텐츠를 덮어씁니다.

    @{
    Layout = "~/_MapLayout.cshtml";
    Assets.AddScript("~/Scripts/jquery-1.6.2.min.js");
    }
    
    <div id="navigation">
    <h3>Map an Address:</h3>
    <form method="post" action="" id="coordinates" style="width: 320px">
    <fieldset>
      <div>
        <label for="address">Address:</label>
        <input style="width: 300px" type="text"  name="address"  value="@Request["address"]"/>
        <input type="submit" value="Map It!" />
       </div>
    </fieldset>
    </form>
    </div>
    <div id="content">
    @if(IsPost) {
    var theAddress = Request["address"];
    @Maps.GetGoogleHtml(theAddress,
        width: "800",
        height: "800")
    }
    </div>
    
  4. 사이트의 루트에 _MapLayout.cshtml 이라는 파일을 만듭니다. 이 페이지는 두 매핑 페이지의 레이아웃 페이지입니다.

  5. 다음 코드를 파일에 복사하여 기존 콘텐츠를 덮어씁니다.

    <!DOCTYPE html>
    
    <html lang="en">
    <head>
    <meta charset="utf-8" />
    
    <title></title>
    <style type="text/css">
        #navigation {
            position: absolute;
            top: 1em;
            left: 3em;
            width: 18em;
        }
        #content {
            margin-top: 10em;
            margin-left: 3em;
        }
    </style>
    </head>
    <body>
      @RenderBody()
    
      @*
    Call the Assets helper to render tags for the Maps helper. For
    releases after Web Pages 2 Beta, call Assets.GetScripts().
      *@
      @Assets.GetScripts()
    </body>
    </html>
    
  6. 사이트 루트에 MapCoordinates.cshtml 이라는 파일을 만듭니다. 이 페이지에서는 전달한 좌표 집합을 기반으로 맵을 생성합니다.

  7. 다음 코드를 파일에 복사하여 기존 콘텐츠를 덮어씁니다.

    @{
    Layout = "~/_MapLayout.cshtml";
    Assets.AddScript("~/Scripts/jquery-1.6.2.min.js");
    }
    
    <div id="navigation">
    <h3>Map a set of coordinates:</h3>
    <form method="post" action="" id="coordinates">
    <fieldset>
    <div>
        <label for="latitude">Latitude:&nbsp;&nbsp;&nbsp;</label>
        <input type="text"  name="latitude" value="@Request["latitude"]"/>
    </div>
    <div>
        <label for="longitude">Longitude:</label>
        <input type="text" name="longitude" value="@Request["longitude"]"/>
    </div>
    <div>
        <input type="submit" value="Map It!" />
    </div>
    </fieldset>
    </form>
    </div>
    <div id="content">
    @if(IsPost) {
    var theLatitude = Request["latitude"];
    var theLongitude = Request["longitude"];
    @Maps.GetBingHtml("Ag6C5Ci9VUGz9AIhQyJ7YNwGraanqwy5-V3LK1qGDpdEVPV-MUPBryG18ELoC6g6",
        "",
        theLatitude,
        theLongitude,
        width: "800",
        height: "800")
    }
    </div>
    

매핑 페이지를 테스트하려면 다음을 수행합니다.

  1. MapAddress.cshtml 파일을 실행합니다.

  2. 주소, 시/도, 우편 번호를 포함한 전체 주소 문자열을 입력한 다음 지도 단추를 선택합니다 . 페이지는 Google Maps에서 지도를 렌더링합니다.

    topseven-maphelper-1

  3. 특정 위치에 대한 위도 및 경도 좌표 집합을 찾습니다.

  4. MapCoordinates.cshtml 페이지를 실행합니다. 좌표를 입력한 다음 지도 단추를 선택합니다. 페이지는 Bing 지도 지도를 렌더링합니다.

    topseven-maphelper-2

웹 페이지 애플리케이션을 나란히 실행

웹 페이지 2는 애플리케이션을 나란히 실행하는 기능을 추가합니다. 이렇게 하면 웹 페이지 1 애플리케이션을 계속 실행하고, 새 웹 페이지 2 애플리케이션을 빌드하고, 모두 동일한 컴퓨터에서 실행할 수 있습니다.

WebMatrix를 사용하여 웹 페이지 2 베타를 설치할 때 기억해야 할 몇 가지 사항은 다음과 같습니다.

  • 기본적으로 기존 웹 페이지 애플리케이션은 컴퓨터에서 버전 2 애플리케이션으로 실행됩니다. (버전 2의 어셈블리는 GAC에 설치되며 자동으로 사용됩니다.)

  • 웹 페이지 버전 1을 사용하여 사이트를 실행하려는 경우(이전 시점과 같이 기본값 대신) 이 작업을 수행하도록 사이트를 구성할 수 있습니다. 사이트에 사이트 루트에 web.config 파일이 아직 없는 경우 새 파일을 만들고 다음 XML을 복사하여 기존 콘텐츠를 덮어씁니다. 사이트에 이미 web.config 파일이 있는 경우 섹션에 <appSettings> 다음 <configuration> 요소와 같은 요소를 추가합니다.

    <?xml version="1.0"?>
    <configuration>
    <appSettings>
    <add key="webPages:Version" value="1.0"/>
    </appSettings>
    </configuration>
    

    '- web.config 파일에서 버전을 지정하지 않으면 사이트가 버전 2 사이트로 배포됩니다. (버전 2 어셈블리는 배포된 사이트의 bin 폴더에 복사됩니다.)

  • 웹 매트릭스 버전 2 베타의 사이트 템플릿을 사용하여 만드는 새 애플리케이션에는 사이트의 bin 폴더에 웹 페이지 버전 2 어셈블리가 포함됩니다.

일반적으로 NuGet을 사용하여 사이트의 bin 폴더에 적절한 어셈블리를 설치하여 사이트에 사용할 웹 페이지의 버전을 항상 제어할 수 있습니다. 패키지를 찾으려면 NuGet.org 방문하세요.

모바일 디바이스용 렌더링 페이지

웹 페이지 2를 사용하면 모바일 또는 다른 디바이스에서 콘텐츠를 렌더링하기 위한 사용자 지정 디스플레이를 만들 수 있습니다.

네임스페이스에는 System.Web.WebPages 표시 모드로 작업할 수 있는 , 및 DisplayModes클래스가 포함되어 있습니다DisplayInfoDefaultDisplayMode. 이러한 클래스를 직접 사용하고 특정 디바이스에 적합한 출력을 렌더링하는 코드를 작성할 수 있습니다.

또는 FileName.Mobile.cshtml과 같은 파일 명명 패턴을 사용하여 디바이스별 페이지를 만들 수 있습니다. 예를 들어 MyFile.cshtml이라는 페이지와 MyFile.Mobile.cshtml 이라는 두 가지 버전의 페이지를 만들 수 있습니다. 런타임에 모바일 디바이스가 MyFile.cshtml을 요청하면 Web Pages는 MyFile.Mobile.cshtml에서 콘텐츠를 렌더링합니다. 그렇지 않으면 MyFile.cshtml 이 렌더링됩니다.

다음 예제에서는 모바일 디바이스에 대한 콘텐츠 페이지를 추가하여 모바일 렌더링을 사용하도록 설정하는 방법을 보여 줍니다. Page1.cshtml 에는 콘텐츠와 탐색 사이드바가 포함되어 있습니다. Page1.Mobile.cshtml 은 동일한 콘텐츠를 포함하지만 사이드바를 생략합니다.

코드 샘플을 빌드하고 실행하려면 다음을 수행합니다.

  1. 웹 페이지 사이트에서 Page1.cshtml 이라는 파일을 만들고 예제에서 Page1.cshtml 콘텐츠를 복사합니다.

  2. Page1.Mobile.cshtml이라는 파일을 만들고 예제에서 Page1.Mobile.cshtml 콘텐츠를 복사합니다. 페이지의 모바일 버전에서는 더 작은 화면에서 더 나은 렌더링을 위해 탐색 섹션을 생략합니다.

  3. 데스크톱 브라우저를 실행하고 Page1.cshtml로 이동합니다.

  4. 모바일 브라우저(또는 모바일 디바이스 에뮬레이터)를 실행하고 Page1.cshtml로 이동합니다. 이번에는 웹 페이지가 모바일 버전의 페이지를 렌더링합니다.

    참고

    모바일 페이지를 테스트하려면 데스크톱 컴퓨터에서 실행되는 모바일 디바이스 시뮬레이터를 사용할 수 있습니다. 이 도구를 사용하면 웹 페이지가 모바일 디바이스에서 보이는 것처럼 테스트할 수 있습니다(일반적으로 표시 영역이 훨씬 작음). 시뮬레이터의 한 가지 예는 데스크톱 버전의 Firefox에서 다양한 모바일 브라우저를 에뮬레이트할 수 있는 Mozilla Firefox용 사용자 에이전트 전환기 추가 기능입니다.

Page1.cshtml

<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
    #navigation {
        position: absolute;
        top: 0;
        left: 0;
        width: 10em;
    }
    #content {
    margin-left: 13em;
        margin-right: 10em;
    }
</style>
</head>
<body>
<div id="navigation">
    <h3>Related Sites</h3>
    <ul>
        <li><a href="http://www.adventure-works.com/">Adventure Works</a></li>
        <li><a href="http://www.contoso.com/">Contoso, Ltd</a></li>
        <li><a href="http://www.treyresearch.net/">Trey Research</a></li>
    </ul>
</div>
<div id="content">
    <h1>Lorem ipsum dolor</h1>
    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
    eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
    At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
    no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
    amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut
    labore et dolore magna aliquyam erat, sed diam voluptua. </p>
    <p>At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd
    gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum
    dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt
    ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam
    et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
    sanctus est Lorem ipsum dolor sit amet.</p>
</div>
</body>
</html>

Page1.Mobile.cshtml

<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
    #content {
    margin-left: 2em;
        margin-right: 5em;
    }
</style>
</head>
<body>
<div id="content">
    <h1>Lorem ipsum dolor</h1>
    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
    eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
    At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
    no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
    amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut
    labore et dolore magna aliquyam erat, sed diam voluptua. </p>
    <p>At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd
    gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum
    dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt
    ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam
    et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
    sanctus est Lorem ipsum dolor sit amet.</p>
</div>
</body>
</html>

데스크톱 브라우저에서 렌더링된 Page1.cshtml:

topseven-displaymodes-1

Firefox 브라우저의 Apple iPhone 시뮬레이터 보기에 표시되는 Page1.Mobile.cshtml입니다. 요청이 Page1.cshtml에 있더라도 애플리케이션은 Page1.Mobile.cshtml을 렌더링합니다.

topseven-displaymodes-2

추가 리소스

ASP.NET 웹 페이지 1개 리소스

참고

대부분의 웹 페이지 1 프로그래밍 및 API 리소스는 여전히 웹 페이지 2에 적용됩니다.

WebMatrix 리소스