내가 가진 URL : 나는 아래와 같은 url로 원하는 http://www.abc.com/Results?Id=1111-11&Name=abcdMVC에서 라우팅을 사용하여 URL에 매개 변수를 숨기는 방법이
:
가 어떻게 작업 이름 (결과)도 매개 변수를 숨길 수 있습니다 (ID ,이름). 나는 그냥 지우지 않기를 원합니다. ID, 이름 및 작업 이름이 컨트롤러로 전달되어야합니다.
내가 가진 URL : 나는 아래와 같은 url로 원하는 http://www.abc.com/Results?Id=1111-11&Name=abcdMVC에서 라우팅을 사용하여 URL에 매개 변수를 숨기는 방법이
:
가 어떻게 작업 이름 (결과)도 매개 변수를 숨길 수 있습니다 (ID ,이름). 나는 그냥 지우지 않기를 원합니다. ID, 이름 및 작업 이름이 컨트롤러로 전달되어야합니다.
ID를 제거 할 수 없습니다. 경로에서 제거하면 더 이상 서버로 전달할 수 없습니다. 그게 어디서 온 것 같니? 당신이 할 수있는 것은 다음과 같은 SEO 친화적 인 URL 패턴을 가지고 있습니다 :
http://www.abc.com/US/1111-11/abcd
정확히 StackOverflow의 질문에 그것을 수행한다. 검색 주소창을 보면 다음과 같이 표시됩니다.
https://stackoverflow.com/questions/15378465/how-to-hide-parameter-in-url-using-routing-in-mvc-2
아이디와 이름이 있습니다.
routes.MapRoute(
name: "ResultsRoute",
url: "us/{id}/{name}",
defaults: new { controller = "Search", action = "Results" }
);
이름이 일부 특수 문자가 포함 된 경우 발생할 수있는 다음 문제 : 다음 경로 정의를 가질 수 있음을 달성하기 위해
. Scott Hanselman은이 내용을 그의 blog post
에서 자세히 설명했습니다. 이를 해결하는 적절한 방법은 이름에서 위험한 모든 문자를 제거하는 것입니다. StackOverflow가 사용하는 for example the filtering function
입니다.
public ActionResult Results(int id)
{
...
}
: 그래서 아이디어는 SEO 친절하지만 이미 해당 ID를 가지고 있기 때문에 컨트롤러의 행동에 필요하지 않은 소위
슬러그을이 필터링 기능을 통해 이름을 전달하고 생성하는 것입니다