0

모든 페이지의 콘텐츠를 데이터베이스에서 가져 와서 페이지에 표시 할 수있는 ASP.NET MVC 응용 프로그램을 개발 중입니다.BaseController에 콘텐츠 액세스 논리를 추가하는 것이 좋은 생각입니까?

비전문가가 소스 코드 (예 :보기)에 들어가서 사물을 변경하지 않고도 콘텐츠를 편집 할 수 있습니다.

내가하는 방법은 각 컨트롤러가 기본 컨트롤러에서 파생된다는 것입니다. 기본 컨트롤러는 'OnActionExecuted'를 오버로드하여 현재 액션/컨트롤러에 할당 된 모든 콘텐츠를 가져올 수 있습니다.

'ContentViewModel'에서 파생 된 ViewModel을 반환하는 경우 ViewModel의 'Text'속성에 데이터베이스의 텍스트가 채워집니다.

그리고 나서 텍스트는보기에 의해 렌더링됩니다.

이 디자인의 약점을 볼 수 있습니까?

기본 컨트롤러를 사용하는 대신보기에서 호출하는 내용을 가져 오기위한 HtmlHelper 확장을 사용하는 것이 더 좋을까요?

내가 묻는 한 가지 이유는 내 자신의 기본 컨트롤러가 'Html.RenderAction'호출을 방해하는 것으로 보이는데 이는 지정된 컨트롤러가 'System.Web.Mvc.Controller'에서 직접 상속받을 것으로 기대하는 것 같습니다.

답변

1
  1. ActionFilters를 사용하여 콘텐츠를 가져올 수 없습니다.

  2. 컨트롤러는 내용을 가져 오기 위해 사용되어서는 안되며 단순한 로직을 적용하여 들어오는 요청을 보내야합니다.

  3. HTML 도우미를 사용하여 콘텐츠를 가져올 수 없습니다. 제공된 데이터로 미리 채워진 UI 요소를 렌더링하기위한 것입니다. 모든 페이지에 대한 내용이 대부분의 응용 프로그램이 작동하는 방법 기본적으로의 데이터베이스

    에서 가져온 할 수

응용 프로그램입니다.

비전문가가 소스 코드 (예 :보기)에 들어가서 내용을 변경하지 않고도 콘텐츠를 편집 할 수 있습니다.

기술적 인 사람이 아닌 사람은 콘텐츠를 편집 할 수있는 적절한 UI가 있어야합니다. 프로젝트 기반 기술과는 별도로 비 기술적 인 개인은 코드를 편집하지 않아도됩니다.

이상한 것을 만들지 말고 일을 분명히하는 것이 좋습니다. 뷰에서 렌더링 할 모델에 데이터를 제공 할 비즈니스 계층을 구현하십시오. 다른 사람들이 콘텐츠를 편집 할 수있는 UI를 만듭니다.

관련 문제