2012-03-06 3 views
0

같은 동작으로 다른 URL에 대한 레이아웃을 적용합니다 및 URL.어떻게 세 가지 작업을 세 컨트롤러가

처음에는 RenderPartial을 사용했으나 여전히 코드 중복이 많습니다 (주로 액션).

그래서 나는 이것을 피하는 방법을 원한다. 예를 들어 컨트롤러를 하나만 만들고 라우트를 구성하면 다른 URL에 맞게 레이아웃을 선택할 수있다.

답변

1

어떻게 컨트롤러가 레이아웃을 정의합니까? 이것은 나쁜 습관이다. MVC에서 VIEW 레이어는 레이아웃을 정의하기위한 것임을 기억하십시오.

각보기 파일은

@{ 
    Layout = "path/to/your/layout.cshtml"; 
} 

와 기본 공유 레이아웃 파일을 무시할 수 있으며, 예를 들어 ViewBag 동적으로 그 값을 제공 할 수 있습니다.

+0

각 컨트롤러에 대해 각 컨트롤러 뷰는 동일합니다 (이제는이 컨트롤러를 제거하려고합니다.) - 전체적으로 볼 때 3x3 뷰가 있습니다. 보기에서 나는 레이아웃을 정의했다. 그래서 내가 아는 한 - 최선의 접근 방식은 컨트롤러에서 URL에서 필요한 레이아웃을 찾아서보기로 전달하는 것입니다. –

+0

URL에 넣어 두지 않고 선택한 레이아웃을 프로필 또는 쿠키에 저장합니다. 왜 그것을 URL에 저장하고 싶습니까? – torm

+0

나는이 URL을 "site.net/en/Controller1/List/", "site.net/en/Controller2/List/"로 사용하고 있기 때문에 결과는 같은 내용이지만 레이아웃은 달라야합니다. 이제는이 요청을 하나의 컨트롤러로 라우팅하여 레이아웃을 설정할 수 있기를 바랍니다. –

0

컨트롤러에서 사용해야하는보기 파일을 지정할 수 있습니다.

return View("~/Views/Posts/Index.cshtml", db.Posts.ToList()) 

이렇게하면 다른 컨트롤러 메소드에 대해 동일한 템플릿을 사용할 수 있습니다.

관련 문제