2009-03-17 5 views
1

I는 다음과 같습니다 전화가 :Html.Routelink 출력 - ASP.NET C# MVC

http://localhost:1485/Home/ShowCategory/Electronics%20&%20Photography?subcat=electronics-photo 

가 왜 작업을 수행합니다

<%= Html.RouteLink(item.displayName, "DisplayCategory", new { category = Html.Encode(item.displayName), subcat = item.searchName }) %> 

을 나는 다음과 같습니다 HTML을 받고 있어요 URL은 "/ electronics-photo"가 아닌 "? subcat = electronics-photo"로 끝나야합니까? 어떻게 든 경로 정의와 관련이 있습니까?

routes.MapRoute(
     "DisplayCategory", 
     "Home/ShowCategory/{category}/{tags}", 
     new { controller = "Home", action = "ShowCategory", category = "", tags = "" } 
    ); 

실마리가 있습니다.

답변

0

저는 찌르기 만하고 있지만 MVC 프레임 워크를 사용하고있는 것처럼 보입니다.

모든 컨트롤러에는 작업 (이 경우 ShowCategory)이 있으며 기본적으로 쿼리 문자열 (이 경우 카테고리)을 사용합니다. MVC는 의도적으로 폴더 구조를 추상화합니다. 나는 MVC 애플 리케이션이 항상이 유형과 깊이 domain.ext/Controller/Action? queryString의 URL을 가질 것이라고 믿는다.

서브 캣이 제대로 설정되었는지 여부는 질문에 달려 있다고 생각합니다. 좀 더 많은 정보/코드가 희망적 일 수 있습니다.

질문의 전달 부분을 처리하지 않아서 죄송합니다.

+0

답장을 보내 주셔서 감사합니다. 예, MVC를 사용하고 있습니다 ... 내가 혼란스러워하는 이유는 단지 '/'를 추가하고/queryString을 만드는 것보다 queryString을 만드는 이유입니다. –

+0

MVC는 쿼리 문자열을 사용하여 작업에 매개 변수를 전달합니다. '/'는 MVC를 제외하고 컨트롤러와 액션 폴더 만있는 하위 폴더에만 액세스하는 데 사용됩니다. – user58044

2

MVC 라우팅은 경로 정의에서 매개 변수 중 하나와 일치 할 수없는 경우 쿼리 문자열에서 지정합니다. 경로에 subcat을 추가하십시오.

routes.MapRoute(
     "DisplayCategory", 
     "Home/ShowCategory/{category}/{tags}/{subcat}", 
     new { controller = "Home", action = "ShowCategory", category = "", tags = "", subcat = "" } 
    );