2009-08-19 4 views
0

나는 새로운 컨트롤러를 만들어야 할 때 혼란 스럽다. 어딘가로가는 버튼을 만들 때마다 나는 올바른 컨트롤러 이름을 얻기 위해 새로운 컨트롤러를 만들어야 할 것처럼 보였다.Asp.net Mvc 컨트롤러 이름하는 방법?

예를 들어이 시나리오에서는 signIn 컨트롤러가 있습니다.

이 컨트롤러는 그들이 다른 컨트롤러로 이동 로그인 클릭하면 그래서 (AccountController를 호출 할 수 있습니다)

1. Login view 
2. RestPassword view 
3. CreateAccount view 

있을 것입니다 그래서 이것은 그것의 모든 계정보기 물건이있을 것이다.

이제 RestPassword보기는 어떻습니까? 그것은 사용자 암호를 쉬게했을 때 나는 그것이 성공했다는 것을 보여주는 페이지로 가고 싶다. (대부분의 사이트는 이메일 주소를 입력하면 asp.net 사이트에서이를 수행하는 것처럼 보인다. 다른 페이지로 이동하여 새 암호를 보냈습니다).

이제 다른보기가 어떻게되어야합니까? 컨트롤러?

이 뷰는 다음 경로 지정 종류의 나에게 이상한 모습

http://www.site.com/signIn/EmailForgottenPassword 

과 같을 것이다 경우.

나는 새로운 컨트롤러가 그때 많이 나에게 좋아 보이는 무엇

http://www.site.com/EmailForgottenPassword 

을 가질 수 있도록하지만,이 컨트롤러는 하나 하나 개 개의보기를했을 경우.

또 다른 예가이 sigIn 페이지에 있으며 계정 만들기 버튼입니다. 이제 클릭하면 다른 계정 목록이있는 다른 페이지로 이동합니다.

이 컨트롤러도 새 컨트롤러 여야합니까? 계정이이 새 페이지에 나열되면 모든보기가있는 등록 컨트롤러에 계정이 모두 연결됩니다.

은 그래서 SignController -> RegistrationController -> RegistrationController.

처럼이 아마 좋은 링크를 얻을 것입니다 것입니다.

그래서 나는 그것이 좋은 링크를 얻는 것 같아 컨트롤러 이후에 새로운 컨트롤러를 끊임없이 만들 필요가 있다고 말했다.

그래서 나는 뭔가를 놓치고 있어야합니다.

+0

URL을 깨끗하게 유지해야하는 경우/Registration/EmailForgottenPassword를/EmailForgottenPassword로 간단히 라우팅하는 경로를 추가 할 수 있습니다. – mxmissile

답변

2

구체적인 경우 하나의 컨트롤러로 충분합니다. AccountController라는 이름을 지정하고 다음 작업을 AccountController에 추가합니다.

  • 로그인
  • 로그 아웃
  • 당신이 (가) Post Redirect Get (PRG) pattern 사용할 수 있습니다 확인 화면을 원하는 사람들을 위해 다음 CreateConfirmation
  • ResetPassword
  • ResetPasswordConfirmation

을 만듭니다.

에 대한 명명입니다. 일반적으로 컨트롤러에 명사를 사용하고 해당 컨트롤러에 대한 동작을 사용하고 싶습니다. 그렇게하면 의미있는 가독성있는 URL을 얻을 수 있습니다. 명사의 경우 컨트롤러가 다루는 논리/비즈니스 용어 (더 나은 기술 용어)를 선택할 수 있습니다. 따라서 계정, 고객, 제품, 블로그 포스트 등 ...

4

사실 실제로 당신은 결코 이 필요합니다. 하나 이상의 컨트롤러이 필요합니다. 별도의 컨트롤러는 우려를 분리하는 방법 일뿐입니다. 즉, OO 설계 패러다임은 우리 코드를 논리적으로 모듈로 나눌 것을 촉구하지만 을 가지지 않습니다. 모든 것이 하나의 컨트롤러에있을 수 있습니다. 당신이 필요성을 무엇

당신이 처리 할 요청의 각각 다른 유형에 대해 별도의 컨트롤러 액션입니다. 즉, 일부 URL을 입력하거나 GET 또는 POST 데이터를 제공하여 호출 할 수있는 라우팅 테이블에 노출 된 컨트롤러 메서드가 필요합니다. 그런 다음이 메소드는 사용자 (보기)를 표시 할 항목을 결정합니다.

또한, 을 가질 수 있습니다 당신은 에 Globals.asax의 라우팅 테이블을 수정하여 원하는 컨트롤러 또는 컨트롤러 액션 포인트를 원하는 URL.

당신은 아마 내 대답에 대한보다 구체적인 질문이 - 그들을 게시하고 내가 그들을 편집 할

0

당신이 그때 당신은 매우 구체적으로 그 이름을 지정해야 SOLID 원칙을 다음과 같은 경우 바랍니다.. ASP.NET MVC 2를 사용하는 경우 주요 위젯을 "영역"에 넣은 다음 컨트롤러에 좋은 이름을 지정합니다. URL을 행복하게 만드십시오!