2011-06-12 3 views
1

내 사이트의 태그 클라우드 부분보기를 만들었습니다. 부분보기는 사이트의 모든 페이지에 포함됩니다. 데이터는 데이터베이스에서 가져옵니다. 컨트롤러에있는 코드를 실행하는 방법이 있습니까? 그래서 모든 단일 컨트롤러의 모든 단일 액션에 코드를 넣을 필요가 없습니다.사이트 와이드 태그 클라우드

나는 모든 행동에 퍼팅 피하기 위해 싶습니다 내가 그 코드를 변경해야한다면

public ActionResult Index() 
{ 
    ViewData["Tags"] = Tags.GetTags(); 
    return View(); 
} 

public ActionResult Index() 
{ 
    return View(Tags.GetTags()); 
} 

그것은 악몽이 될 것입니다. 사이트의 모든 페이지에있는 데이터베이스 바인딩 된 콘텐츠를 처리하는 더 좋은 방법이 있어야합니다.

답변

3

당신은 항상 ViewModel 패턴을 사용하고 모든 행동에 대한 기본 ViewModel 클래스를 할 수 :

public abstract class ViewModelBase 
{ 
    public IEnumerable<Tag> Tags { get; private set; } 

    public ViewModelBase() 
    { 
     Tags = GetTagsFromDatabase(); 
    } 
} 

은 그럼 그냥 이후의 모든 ViewModel 상속이 기본 클래스합니다.
public HomeViewModel : ViewModelBase 
{ 
    ... 
} 

다음 Controller 행동

:이 도움이

public ActionResult Index() 
{ 
    var viewModel = new HomeViewModel(); 
    return View(viewModel); 
} 

희망.

+1

HA! 그것이 바로 그 것이다. 좋은 생각. – Darthg8r

0

마스터 코드에 전역 코드를 넣거나 코드에서 사용자 지정 컨트롤을 만들어 해당 코드가 필요한 페이지에서 다시 사용할 수도 있습니다.

관련 문제