“표현 논리”란 무엇이며 견해에서 얼마나 수용 가능한가?


13

내 웹 응용 프로그램에서 작성 및 편집을위한 양식을 제공해야합니다. 작성 및 편집 양식에는 약간의 차이가 있으므로 다음과 같이 생각합니다.

<form>
// a lot of htnl goes here 
@if (editing)
{
  // some more fields shown in edit mode
}
@if(!editing)
{
 // some stuff shown in create mode
}

나는 항상 if내 견해에 진술 을하지 않으려 고 노력 했지만 이번에는 HTML의 많은 부분을 두 곳에서 복사하지 않고 다른 옵션을 보지 못했습니다. 이것이 적절한 "표시 논리"입니까? 다른 옵션이 있습니까?

답변:


17

프리젠 테이션 로직은 특정 뷰에 대해 올바른 방식으로 비즈니스 데이터를 제시하는 데 필요한 로직 및 계산으로 구성됩니다.
복잡한 그래픽보기의 경우 이는 매우 복잡한 계산 (예 : 각 파이 조각의 크기 계산 및 파이 차트의 레이블 위치 지정) 일 수 있지만 주요 특징은 현재와 관련된 정보 만 계산한다는 것입니다. 비즈니스 데이터를 어떤 식 으로든 수정하지 않습니다.

편집 / 만들기 모드를위한 필드의 선택이 프리젠 테이션 로직의 적절한 사용인지는 논란의 여지가 있습니다. 부분적으로 사용자 정의의 종류와 양에 따라 다릅니다.
예를 들어 차이가 제목 변경이거나 하나 또는 두 개의 필드를 하나의 모드에서 읽기 전용으로 표시하는 경우 하나의보기를 갖고 모드를 동적으로 선택하는 것이 올바른 선택 일 수 있습니다.
반면에, 나의 첫 번째 반응은 실제로 두 부분으로 이루어져야한다는 것인데, 공통 부분은 세 번째 파일에서 가져옵니다 (헤더와 바닥 글이 뷰에 얼마나 자주 추가되는지와 유사합니다).


12

Razor 뷰에서 @if 문 또는 2 개를 사용하는 것이 완벽하게 합리적입니다.
그들은 @if를 Razor에 추가했습니다-사용되어야합니다.

@if로 코드를 줄일 수 있습니다.

@if (editing)
{
  // some more fields shown in edit mode
}
else
{
 // some stuff shown in create mode
}

대안은 세 가지보기를 사용하는 것입니다.

  • 공통 HTML을 포함하는 부분보기
  • 뷰 생성 (부분 뷰 호출)
  • 뷰 편집 (부분 뷰라고도 함)

읽기 전용 및 편집 가능한보기를 분할하는 좋은 방법 인 DisplayTemplates 및 EditorTemplates를 확인할 수 있습니다.

http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.