ASP.NET MVC 2 컨트롤러 및 작업은 UpperCamelCase를 사용합니다.ASP.NET MVC2에서 소문자 URL ('questions/add_to_favorites/123')을 밑줄로 묶는 방법은 무엇입니까?
몇 가지 이유로 SO를 비롯한 많은 대형 사이트는 URL의 컨트롤러 및 동작에 소문자 (밑줄 표시)를 사용합니다. 예 :
https://stackoverflow.com/questions
https://stackoverflow.com/users/377920/randomguy
http://www.reddit.com/ad_inq/
http://www.wired.com/special_multimedia/mobile/
etc.
이 작업이 어떻게 수행되는지 알고 싶습니다.
기본 라우터는 대소 문자를 구분하지 않습니다. stackoverflow.com/questions/ask
은 문제없이 질문 컨트롤러의 Ask() 메소드로 이동합니다.
그러나 질문 컨트롤러의 AddToFavorites() 작업에 questions/add_to_favorites
을 보내려고한다고 가정 해 보겠습니다.
- 어떻게 처리 할 수 있습니까?
Html.ActionLink("AddToFavorites")
대신Html.ActionLink("add_to_favorites")
을 사용하여Questions/AddToFavorites
대신questions/add_to_favorites
으로 HTML 지점의 링크를 만들 필요가 있습니까?
편집 :
: 유사 게시물 밑줄을 지원하는- How can I have lowercase routes in ASP.NET MVC?
- ASP.NET MVC: Get lowercase links (instead of Camel Case)
한 가지 방법은 ActionName 속성을 사용하는 것입니다
그러나 컨트롤러에서는 작동하지 않습니다. 아마도 라우팅 메커니즘에 도달하기 전에 모든 밑줄을 요청에서 제거 할 수 있다면 작동 할 수 있습니다.
빠른 쪽지. 'add_to_favorite'가 POST를 필요로하는지 확인하십시오. GET 요청은 서버의 상태를 수정해서는 안됩니다. – Earlz
동의! 이것은 RESTful 주부만을위한 것이 아닙니다. 국가 변경 GET 요청은 보안 허점을 만듭니다. 하지만 인증을 강제하고 사이트 간 요청 위조 (AntiForgeryToken 사용)를 방지하는 경우 GET'ing이 기술적으로 문제가 있다고 생각하지 않습니다. – randomguy
그리고 단순히 [HttpPost]를 추가해도 보안 문제가 해결되지 않습니다. 악의적 인 사람은 단순히 양식 게시글을 모방 할 수 있습니다.따라서 POST (또는 AJAX에서 DELETE/PUT)를 강요하더라도 여전히 조심해야합니다. – randomguy