2011-05-06 10 views
0

나는 두 가지 유형의 데이터 (예 : 사용자 및 제품)를 표시합니다. 조건에 따라 사용자 또는 제품을 표시해야합니다. 가장 좋은 방법은 View에 추가 할 때마다 확장 메서드를 도입해야한다는 것입니다. 그러나 사용자와 제품 HTML은 확장 메소드에 하드 코딩하기에는 너무 복잡해 보입니다. 이 문제를 해결하기위한 모범 사례가 있습니까?asp.net mvc는 조건에 따라 다른 콘텐츠를 표시합니다.

답변

0

Ive는 this 솔루션 (# 18 html 도우미 확장 프로그램)을 사용하기로 결정했습니다. 확장 방법이 this과 결합됩니다. 이 html.RenderMyPageData (Model);을 작성하는 것을 허용합니다. 메소드 내부에 캡슐이 채워지지 않습니다. 그리고 문자열 작성기로 html을 생성하지는 않지만 부분 뷰를 작업 할 준비가 될 것입니다.

0

내가보기에 if을 가지고 있다는 우려는 비즈니스 논리 (프레젠테이션 계층에 위치가 없음)를 도입 할 수 있다고 생각합니다.

if의 사용은 순전히 프레젠테이션과 관련이 있습니까? 그런 다음보기에서 사용하십시오.

if은 비즈니스 로직을 구현합니까? 디자인을 재고하십시오.

여전히 if이있는 경우 (그리고 프로젝트에 대해 알지 못해도) 확장 방법을 사용해야하는 이유가 확실하지 않습니다. 앞뒤로 코드 사이하지 않을로 stmt를 정말 스파게티하지 않은 경우 사용

<% 
    if (someCondition) 
    { 
     Html.RenderAction("User", "Index"); 
    } 
    else 
    { 
     Html.RenderAction("Product", "Index"); 
    }  
%> 
+0

그레이엄, 이것이 갈 길 중의 하나입니다. 그러나 매우 어색해 보입니다. 5 가지의 비슷한 것을 표시하려면 스파게티 코드가 있어야합니다. 그래서''make ''와''extension ''방법을 추천한다면 사용하는 대신에. 당신은 Html.MySpecialMarkup (Model)처럼 사용할 것입니다. –

0

: 나는 비슷한에 문제가 표시되지 않습니다. 그것도 꽤 읽을 수 있습니다. 이 경우 확장 메서드를 사용하면 모든 HTML을 하드 코딩하지 않아도되지만 반환 할 특정 작업으로 다시 리디렉션되므로 뷰에 동일한 코드가 있거나 확장에 처리 된 뷰에 대한 논리가 필요합니다. 방법.