문제

URL에 대시로 구분 된 단어를 사용하고 싶습니다.그래서 대신 : 라코 디스

원하는 항목 : 라코 디스

가능합니까?

도움이 되었습니까?

해결책

다음과 같이 ActionName 속성을 사용할 수 있습니다. 라코 디스

그런 다음보기 파일을 "My-Action.cshtml"(또는 적절한 확장자)로 불러야합니다.또한 모든 Html.ActionLink 메소드에서 "my-action"을 참조해야합니다.

컨트롤러를위한 간단한 솔루션은 없습니다.

편집 : MVC5 업데이트

전체 경로 활성화 : 라코 디스

이제 MVC5에서는 속성 라우팅이 프로젝트에 흡수되었습니다.이제 다음을 사용할 수 있습니다. 라코 디스

행동 방법.

컨트롤러의 경우 해당 컨트롤러의 모든 작업 메서드에 적용될 RoutePrefix 속성을 적용 할 수 있습니다. 라코 디스

RoutePrefix 사용의 이점 중 하나는 URL 매개 변수가 모든 작업 메소드로 전달된다는 것입니다. 라코 디스

캡처 .. 라코 디스

다른 팁

이 블로그에 표시된대로 사용자 지정 경로 처리기를 만들 수 있습니다.

http://blog.didsburydesign.com/2010/02/how-to-allow-hyphens-in-urls-using-asp-net-mvc-2/ 라코 디스

... 및 새 경로 : 라코 디스

매우 유사한 질문이 여기에 있습니다. ASP.net MVC 지원하이픈이있는 URL

저는이 문제에 대해 EveryMvc / Url을 every-mvc / url로 암시 적으로 변환하는 오픈 소스 NuGet 라이브러리 를 개발했습니다.

대문자 URL은 쿠키 경로가 대소 문자를 구분하기 때문에 문제가 있습니다. 대부분의 인터넷은 실제로 대소 문자를 구분하지만 Microsoft 기술은 URL을 대소 문자를 구분하지 않습니다. ( 내 블로그 게시물에 대한 추가 정보 )

NuGet 패키지 : https://www.nuget.org/packages/LowercaseDashedRoute/

설치하려면 프로젝트를 마우스 오른쪽 단추로 클릭하고 NuGet 패키지 관리자를 선택하여 Visual Studio에서 NuGet 창을 열고 "온라인"탭에서 "Lowercase Dashed Route"를 입력하면 팝업이 표시됩니다.

또는 패키지 관리자 콘솔에서 다음 코드를 실행할 수 있습니다.

Install-Package LowercaseDashedRoute

그 후에 App_Start / RouteConfig.cs를 열고 기존 route.MapRoute (...) 호출을 주석 처리하고 대신 다음을 추가해야합니다. 라코 디스

그게 다입니다. 모든 URL은 소문자, 대시로 표시되며 더 이상 수행하지 않아도 묵시적으로 변환됩니다.

오픈 소스 프로젝트 URL : https://github.com/AtaS/lowercase-dashed-route

다음은 ASP.NET MVC 5에서 영역을 사용하여 수행 한 작업이며 매력적으로 작동했습니다.내 뷰의 이름도 바꿀 필요가 없었습니다.

RouteConfig.cs에서 다음을 수행하십시오. 라코 디스

컨트롤러에서 클래스 정의 앞에 다음을 추가하세요. 라코 디스

로컬 머신에서 테스트하는 경우 브라우저에 표시되는 URL은 localhost / sample-area / my-action 입니다.보기 파일 등의 이름을 바꿀 필요가 없습니다.최종 결과에 매우 만족했습니다.

라우팅 속성이 활성화 된 후 SampleAreaRegistration.cs와 같은 영역 등록 파일을 삭제할 수 있습니다.

기사 를 통해이 결론에 도달했습니다.도움이 되셨기를 바랍니다.

Asp.Net MVC 5는 속성 라우팅을 지원하여 경로 이름을보다 명시 적으로 제어 할 수 있습니다.샘플 사용법은 다음과 같습니다. 라코 디스

v5 이전의 Asp.Net MVC를 사용하는 프로젝트에 대해이 동작을 얻으려면 AttributeRouting 프로젝트 ( 너겟으로도 사용 가능 ).실제로 Microsoft는 MVC 5 구현을 지원하기 위해 AttributeRouting 작성자에게 연락했습니다.

Route 클래스 GetRouteData에서 파생 된 사용자 지정 경로를 작성하여 대시를 제거 할 수 있지만 API를 호출하여 URL을 생성 할 때는 작업 이름과 컨트롤러 이름에 대시를 포함해야합니다.

너무 어렵지 않습니다.

다음과 같은 특정 경로를 정의 할 수 있습니다. 라코 디스

하지만이 경로는 기본 경로 이전에 등록해야합니다.

IIS URL 재 작성 모듈 ( http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx ),URL을 다시 작성하면됩니다.

/ my-controller / my-action에 대한 요청은 / mycontroller / myaction에 다시 작성할 수 있으며 사용자 정의 핸들러 또는 다른 것을 작성할 필요가 없습니다.방문자는 예쁜 URL을 얻고 MVC가 이해할 수있는 URL을 얻습니다.

다음은 하나의 컨트롤러와 작업에 대한 예입니다.하지만 좀 더 일반적인 솔루션이되도록 수정할 수 있습니다. 라코 디스

가능한 단점은 개발 중에 재 작성을 위해 IIS Express 또는 IIS를 사용하도록 프로젝트를 전환해야한다는 것입니다.

저는 아직 MVC를 처음 접하는 사람이므로 약간의 소금과 함께 가져 가십시오.우아하고 포괄적 인 솔루션은 아니지만 MVC4에서 나를 위해 트릭을 수행했습니다. 라코 디스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top