ASP.NET MVC를 사용하여 URL에서 컨트롤러 이름을 두 번 가져오기

ASP.NET MVC를 사용하여 URL에서 컨트롤러 이름을 두 번 가져오기

멍청한 질문이라 죄송합니다. 보시다시피 컨트롤러 이름이 URL에 두 번 나타나며 URL에 두 번 있을 경우에만 작동합니다. URL

내 컨트롤러의 모습은 다음과 같습니다. 컨트롤러 액션

그리고 내 견해는 다음과 같습니다.

보다

다른 보기를 생성하면 라우팅이 제대로 작동하기 때문에 이것이 내 라우팅이 아니라는 것을 알고 있습니다. 그냥 입력하면http://localhost:50903/사용자그러면 빈 화면이 나타납니다. try-catch 블록으로 인해 null을 반환하는 것 같지만 함수를 호출하면 UserDao에서 다음과 같이 이동합니다.

유저.다오

그리고 이것이 호출하는 저장 프로시저입니다.

저장 프로시저

도와주세요, 미칠 것 같아요

답변1

애플리케이션에 영역을 생성하셨나요? 영역을 생성하고 그 안에 사용자 컨트롤러 폴더를 배치하면 컨트롤러 이름을 두 번 얻을 수 있기 때문입니다. 그리고 귀하의 URL을 보면 귀하의 첫 번째 컨트롤러 이름이 표시됩니다.사용자일반적으로 영역을 만들 때 대부분 이름을 소문자로 지정하기 때문에 소문자입니다.

아래와 같이 URL에 영역 이름이 포함되어 있으므로 사용자 컨트롤러 이름이 URL에 두 번 표시됩니다.

routes.MapRoute(
      name: "user_route",
      template: "{area:required}/{controller:required}/{action}/{id?}",
      defaults: new { area = "users", controller = "Users" 
      });

경로에서 영역을 제거합니다.

routes.MapRoute(
      name: "user_route",
      template: "{controller:required}/{action}/{id?}",
      defaults: new { controller = "Users", action = "Index" 
      });

따라서 컨트롤러 이름은 URL에 한 번만 표시됩니다.

메모: 애플리케이션에서 영역을 생성한 경우에만 유용합니다. 영역을 만들지 않으셨다면 알려주시면 다른 해결 방법을 찾아보겠습니다.

이것이 당신에게 도움이 되기를 바랍니다.
감사합니다.

답변2

나는 무엇이 잘못되었는지 발견했습니다. 제대로 작동하려면 컨트롤러 이름을 변경해야 했습니다. 컨트롤러 이름이 뷰 이름과 동일하기 때문에 내 애플리케이션이 혼란스러워졌을 수 있습니다.

관련 정보