같은 동작으로 다른 URL에 대한 레이아웃을 적용합니다 및 URL.어떻게 세 가지 작업을 세 컨트롤러가
처음에는 RenderPartial
을 사용했으나 여전히 코드 중복이 많습니다 (주로 액션).
그래서 나는 이것을 피하는 방법을 원한다. 예를 들어 컨트롤러를 하나만 만들고 라우트를 구성하면 다른 URL에 맞게 레이아웃을 선택할 수있다.
같은 동작으로 다른 URL에 대한 레이아웃을 적용합니다 및 URL.어떻게 세 가지 작업을 세 컨트롤러가
처음에는 RenderPartial
을 사용했으나 여전히 코드 중복이 많습니다 (주로 액션).
그래서 나는 이것을 피하는 방법을 원한다. 예를 들어 컨트롤러를 하나만 만들고 라우트를 구성하면 다른 URL에 맞게 레이아웃을 선택할 수있다.
어떻게 컨트롤러가 레이아웃을 정의합니까? 이것은 나쁜 습관이다. MVC에서 VIEW 레이어는 레이아웃을 정의하기위한 것임을 기억하십시오.
각보기 파일은
@{
Layout = "path/to/your/layout.cshtml";
}
와 기본 공유 레이아웃 파일을 무시할 수 있으며, 예를 들어 ViewBag 동적으로 그 값을 제공 할 수 있습니다.
컨트롤러에서 사용해야하는보기 파일을 지정할 수 있습니다.
return View("~/Views/Posts/Index.cshtml", db.Posts.ToList())
이렇게하면 다른 컨트롤러 메소드에 대해 동일한 템플릿을 사용할 수 있습니다.
각 컨트롤러에 대해 각 컨트롤러 뷰는 동일합니다 (이제는이 컨트롤러를 제거하려고합니다.) - 전체적으로 볼 때 3x3 뷰가 있습니다. 보기에서 나는 레이아웃을 정의했다. 그래서 내가 아는 한 - 최선의 접근 방식은 컨트롤러에서 URL에서 필요한 레이아웃을 찾아서보기로 전달하는 것입니다. –
URL에 넣어 두지 않고 선택한 레이아웃을 프로필 또는 쿠키에 저장합니다. 왜 그것을 URL에 저장하고 싶습니까? – torm
나는이 URL을 "site.net/en/Controller1/List/", "site.net/en/Controller2/List/"로 사용하고 있기 때문에 결과는 같은 내용이지만 레이아웃은 달라야합니다. 이제는이 요청을 하나의 컨트롤러로 라우팅하여 레이아웃을 설정할 수 있기를 바랍니다. –