0

asp.net MVC 1.0을 사용하는 미니 CMS와 유사한 응용 프로그램에서 작업하고 있습니다 (2.0이 출시되면 업그레이드 할 예정입니다). 필자가 원하는 기능은 CMS에서 매우 중요하며 관리자가 사이트에 페이지를 추가 할 수있는 기능입니다.MVC - 컨트롤러에 작업을 추가하지 않고 새 뷰 만들기

기본적으로 관리자가 "링크"라는 페이지를 추가하려는 경우 컨트롤러에 작업을 추가하고 새 어셈블리를 컴파일하는 번거 로움없이 작업 할 수 있기를 바랍니다.

저는 솔루션에 대한 아이디어가 있으며 커뮤니티에서 무엇을 생각하는지 알고 싶습니다.

컨트롤러 클래스를 확장하는 클래스 (UserGeneratedGenericController라고 부르겠습니다)를 작성해야한다고 생각합니다. 이 클래스에서는 매개 변수를 읽고 Action에 전달 된 매개 변수에 해당하는 View로 리디렉션하는 단일 Action을 갖습니다.

나는 또한 Global.asax.cs 파일

때문에 /UserGeneratedGenericController/Links/UserGeneratedGenericController/News 칠 것 같은 행동을 칠 것의 라우팅을 편집해야하지만 원하는대로보기를 표시합니다.

당신의 의견은 무엇입니까? 나는이 접근에 대한 여러분의 의견과 다른 접근에 대한 여러분의 제안에 관심이 있습니다.

답변

1

당신이 제시 한 것이 갈 길이라고 생각합니다.

0

페이지 제목을 사용하여 고유 한 URL 슬러그를 만들려면 URL 슬러그를 기반으로 데이터베이스에서 콘텐츠를로드 할 수 있어야합니다 (URL 슬러그를 ID로 사용하는 대신 실제 데이터베이스 ID).

public ActionResult Index(string UrlSlug) { 
    // Get Content For Page {UrlSlug} 
} 

그래서 경로는/Pages/{UrlSlug}이고 샘플은/Pages/Links가됩니다. 그런 다음 PagesController의 Index 액션은 URL 슬러그 (링크)를 풀고 저장소에서 적절한 컨텐트를로드하고 마스터 레이아웃의 내용을 렌더링합니다. 이 줄을 따라 생각하고 있다고 생각합니다. 사용자가 페이지를 추가 할 때 고유 한 URL을 만들면됩니다. 공백을 밑줄로 바꾸거나 특수 문자를 제거하여 요청시 페이지 정보를로드하는 데 사용할 수있는 안전한 URL을 만드십시오.

+2

나는이 방법을 이미 사용하고 있다고 생각합니다. –

+1

Martijn이 맞습니다. 그것은 제가 제안한 해결책이었습니다. 이 솔루션이나 다른 제안에 대한 의견을 찾고 있습니다. – splatto

+0

사실, 작성자가 커뮤니티 의견을 원하며, CRM 세계에서이를 처리하기위한 전략이 있습니다. URL 슬러그의 개념은 일을 더욱 분명하게 만들고이 도메인에 공통된 용어를 사용합니다. 이제 저자는 그 접근법이 받아 들여질 수 있다는 것을 느낄 수 있으며, 공통된 용어를 배웁니다. – NerdFury