2012-09-15 4 views
3
내가 제대로 내 MVC 4/ASP.NET 4.5 응용 프로그램의 URL에 대시/hypens 할 수있는 방법을 고민하고

... 그건 내가 원하는 것이 아니야.ASP.NET MVC 4 - 허용 대시 /에서 hypens URL의 MVC는 밑줄로 대시를 변환 어떤 이유로

나는 내가 여전히 어떤 쉬운 해결책을 찾을 수없는 질문을 게시하기 전에 주변 검색의 좋은 비트를 완료했습니다. 내가 찾은 모든 것은 그와 같은 단순한 구성을위한 우스꽝스러운 방법으로 보인다.

기본적으로, 나는 다음과 같은 URL에 액세스 할 수 있도록하고 싶습니다 :

:

www.mysite.com/dashes-in-url 그래서 예를 들어

을, 나는라는 이름의 컨트롤러를 생성

대시 - 인 - urlController.cs

컨트롤러라는 미세한 컨트롤러 이름 대시시켰다.

폴더 : 내가 위의 컨트롤러의 인덱스에 대한 뷰를 만들 때

그러나,이 같은 뷰 생성/조회/dashes_in_url

해당 폴더의 Index.cshtml 파일을 -하지만 그것은 내 대시를 밑줄로 대체했습니다. 밑줄로 대신 URL의 대시

www.mysite.com/dashes_in_url

:

그래서 내가 같은 URL에 액세스해야합니다.

는 아무도 내가 할 노력하고있어 달성하기 위해 어떤 우아하고 간단한 해결책을 알고 있나요

?

이 문제에 도움을 주시면 감사하겠습니다.

+0

어리석은 질문은 ... 당신이 "대시 -에 - url.cshtml"와 같은보기의 이름을 변경하려고 했습니까? –

+1

당신은 HyphenatedRouteHandler를 구현해야합니다 - 고맙게도 많은 사람들이 이것을 이미 수행했습니다. 따라서 여기에서 승인 된 대답을 http://stackoverflow.com/questions/2070890/asp-net-mvc-support-for-urls-with-hyphens 또는 더 많은 예제를 위해 HyphenatedRouteHandler를 검색하십시오. – bUKaneer

답변

6

나는 EveryMvc/URL을 모든 mvc/url로 암시 적으로 변환하는이 문제에 대해 NuGet 라이브러리을 개발했습니다.

점선 URL을 훨씬 더 SEO 친절하고 쉽게 읽을 수 있습니다. (More on my blog post)

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

그것을 설치하려면, 단순히 프로젝트를 클릭하고 NuGet 패키지 관리자를 선택하고, "온라인"탭 유형 "소문자 대 시선을 마우스 오른쪽 버튼으로 비주얼 스튜디오에서 NuGet 창을 엽니 다 경로 "를 선택하면 팝업이 나타납니다.

다른 방법으로는 패키지 관리자 콘솔에서이 코드 을 실행할 수 있습니다

Install-Package LowercaseDashedRoute

를 그 후에는 App_Start/RouteConfig.cs을 열고 route.MapRoute 기존의 주석 처리한다 (...) 전화를 걸어 다음 내용을 추가하십시오.

routes.Add(new LowercaseDashedRoute("{controller}/{action}/{id}", 
    new RouteValueDictionary(
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }), 
    new DashedRouteHandler() 
) 
); 

그게 전부입니다. 모든 URL은 소문자이고 점선으로 표시되며 암시 적으로 변환됩니다.

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

+1

완벽한 패키지 친구. 감사! –

+0

당신은 오신 것을 환영합니다! –

+0

javascript를 사용하여 window.location.href = "/ MyController/Index/Id/ArbitraryText"와 같은 주소를 참조 할 때 컨트롤러가 파선되지 않습니다. 이 문제를 어떻게 해결할 수 있습니까? –