2009-07-09 5 views
0

나는 (stackoverflow-serverfault-superuser와 같은) 비슷한 또 다른 주제로 확장하고 싶은 웹 사이트 (ASP.NET MVC)를 가지고있다.다중 (다른)보기 레이어를 관리하는 방법

데이터베이스 계층과 컨트롤러 계층은 두 웹 사이트에서 모두 동일합니다. 무엇이 다른지는 뷰 레이어 뿐이지 만 로고, 마스터 페이지 및 일부 리소스 파일 (부분적으로) 및 CSS와 같은 몇 가지 세부 사항 만 있습니다.

이 상황을 관리하는 가장 좋은 방법은 무엇입니까? 제프와 그의 팀은 어떻게이 일을 완수합니까?

이상적인 목표는 단일 솔루션 (Visual Studio 솔루션), 컨트롤러 및 모델이있는 프로젝트, 그리고 n 개의 다른 프로젝트 : 각보기마다 각각의 프로젝트를 만드는 것입니다. (은이 라인을 추가하여)

두 개의 솔루션을 (SVN 또는 Mercurial을 사용하여) 분기 한 다음 게시하는 동안 병합 했습니까?

고마워요!

답변

1

우리는 헬퍼 클래스와이

  • App_GlobalResources \ ServerFault.resx
  • App_GlobalResources \ StackOverflow.resx
  • App_GlobalResources \ MetaStackOverflow.resx

을 수행 할 App_GlobalResources 폴더를 사용 :

public static class Resources 
{ 
public static string TeamEmail { get { return GetString("TeamEmail"); } }  
public static string GetString(string key) 
{ 
    return HttpContext.GetGlobalResourceObject(
     GlobalApplication.CurrentSite.ToString(), key).ToString(); 
} 
} 

하고 그래서 같이보기에 나타납니다 : 더 전체 교체에 대한

<a href="mailto:<%= Resources.TeamEmail %>">contact us</a> 

(예를 들어,/자주 묻는 질문), 우리는 그렇게 같이 자주 묻는 질문의 여러 사본을 가지고

  • Faq-ServerFault.aspx
  • Faq-StackOverflow.aspx
  • Faq-StackOverflowMeta.aspx

빌드는 각 서버의 파일 이름을 적절하게 바꿉니다.

0

웹 사이트가 있고 다른 주제로 웹 사이트를 확장하려고한다고합니다.

  • 당신이 당신의 일을하는 웹 응용 프로그램이 : 나는 당신이 생각해야한다고 생각하는 것은 이런 식이다.
  • 당신은 당신이 배치 을했습니다하는 웹 사이트
  • 지금 당신이 (다만 SO-SF 같은) 같은 기능을 가진 다른 웹 애플리케이션을 원하는 웹 응용 프로그램,하지만 서로 다른 모양과
  • 내가 당신의 작업을 생각 느낀다 웹 응용 프로그램을 다르게 보이도록 구성하고 별도의 서버에 배포하십시오.

참고 : *이 두 웹 사이트는 서로 독립적입니다. 그들은 공통점이 없습니다! * 웹 사이트가 상호 작용하게하려면 웹 응용 프로그램이 다른 인스턴스와 상호 작용하고 재배포 할 수있게하는 것이 좋습니다.

나는 당신이 정확히 무엇을 요구했는지 알기를 원하며, 내가 쓴 것은 도움이되기를 바랍니다.

건배, JRH

+0

예이 잘 될 수있다 (이러한 콘텐츠 뷰가 있습니다, 그래서 그들은 말 그대로 그냥 자주 묻는 질문 콘텐츠 자체 참고는 마스터 페이지 레이아웃의 나머지 부분을 결정합니다)하지만,이 방법 나는 거의 중복해야 전체보기 (리소스 파일 및 템플릿) 및 코드 중복으로 들립니다. 원래 질문을 편집했습니다. –

2

나는 당신이 경우 웹 서버 나 IIS 아파치에있을 수이

  1. 을하는 두 가지 방법으로 생각할 수있는 도메인이 다른과 가게는 CSS, 로고, 서버에 저장할 수있는 다른 UI 요소.

  2. 당신이 마스터 페이지에 대해 이야기하고 도메인이 다르지 않기 때문에 .net을 사용하는 경우 웹 앱에 논리를 추가하여 하나의 템플릿에서 다른 템플릿으로 전환 할 수 있습니다. 사용자 이름 또는 프로필. .net을 사용하고 있다면 다른 스킨을 생성하고 구현해야하는 특정 논리에 따라 할당 할 수 있다고 생각합니다. 다른 언어를 사용하는 경우 템플릿을 생성하고 규칙에 따라 전환 할 수 있습니다.

희망이 있습니다.

+0

을 명확히하기를 바랍니다. 두 번째 요점과 관련된 문제는 코드가 너무 많이 채워질 것이라는 것입니다. else 당신이 몇 달 후에 그것을 읽고 수정할 수 없을 것입니다 ... 실현 가능한 해결책이 아닙니다. –

+1

당신이 세션의 어떤 종류를 추가 할 수있는 if-else 문을 많이 만들 필요가 있다고 생각하지 않습니다. templa의 종류를 알려주는 변수 그런 다음 CSS와 로고 {/ templatename} -main.css의 사전/사후 접미사로 사용하면 해당 templatename 변수를 사용자 pofile에 저장할 수 있습니다. –

관련 문제