2011-11-13 4 views
2

웹 브라우저에 표시된 URL을 최적화하고 싶습니다. 나는 라우팅이 완벽하다는 것을 압니다.하지만 내가 원하는 방식으로 라우팅이 가능한지 모르겠습니다. 목록에있는 프로젝트 목록이 있습니다. 각 프로젝트에는 ID, 이름 및 카테고리가 있습니다. 상세 제품 페이지로 이동할 때 표시되는 URL은 "/ category/name"이어야합니다. ActionLink에서 ID, 카테고리 및 이름을 전달하고 Global.asax에서 라우팅을 조정할 수 있음을 알고 있습니다. 나는 이미 그랬지만 여전히 URL의 나머지 부분에 연결된 ID를 가지고 있습니다. 이것은 추한 것입니다.URL이 주소 표시 줄에 라우팅으로 표시되었습니다.

내보기에 ActionLink :

@Html.ActionLink(@p.Name, "Detail", new { projectID = @p.ProjectID, category = @p.Category, name = @p.Name }) 

Global.asax에 :

routes.MapRoute(null, 
    "{category}/{name}",  
    new { controller = "Project", action = "Detail" } 
); 

결과 URL :

enter image description here

다음

은 예입니다

볼 수 있듯이 projectID는 항상 URL 끝에 추가됩니다. 어떻게 그 행동을 피할 수 있습니까?

감사합니다.

+0

카테고리와 이름이 충분하면 왜 ActionLink에서 projectId를 전달해야합니까? – counsellorben

+0

@counsellorben : 주소 표시 줄의 URL에 범주와 이름이 표시되는 것은 흥미 롭습니다. 세부 사항보기로 전달할 올바른 프로젝트를 얻으려면 Action Controller에 ProjectID가 필요합니다. – Bronzato

+0

그러면 깨끗한 URL을 제공하므로 rouen의 대답을 받아 들여야합니다. – counsellorben

답변

2
routes.MapRoute(null, 
"{category}/{name}/{projectID}",  
new { controller = "Project", action = "Detail", projectID = UrlParameter.Optional } 

);

/INDUSTRIE/Mailing/16

은 당신이 원하는 것을 당신에게 줄 것이다?

+0

아니요,보기에서 여러 가지 (projectID, 이름, 카테고리)로 ActionLink를 만들고 싶습니다. projectID는 액션 컨트롤러에서 올바른 프로젝트를 얻는 데 사용됩니다. 다음으로, URL에서 나는 projectID를보고 싶지 않습니다. 나는 이것이 불가능하다고 생각한다. – Bronzato

+0

대단히 감사합니다 :) – Bronzato

관련 문제