2012-03-09 2 views
0

http://localhost:xyz/HelloWorldHome 컨트롤러의 HelloWorld 작업으로 연결됩니다.Html.ActionLink는 URL에 따라 다른 결과를 산출합니다.

URL을 렌더링하는 페이지에서 동일한 페이지 (예 : 현재 접속중인 페이지에 대한 링크)를 가리키는 Html.ActionLink가 있습니다.

페이지가 http://localhost:xyz/HelloWorld/ (후행 슬래시)으로로드 된 경우에만이 링크가 페이지를 가리키게됩니다. 페이지가 http://localhost:xyz/HelloWorld (슬래시 없음)으로로드 된 경우 컨트롤러 의 Index 작업으로 이동합니다.

여러 오버로드를 시도했지만이 문제의 원인이나 해결 방법을 알 수 없습니다.

Html.ActionLink("Hello World", "HelloWorld", "Home"); 
Html.ActionLink("Hello World", "HelloWorld", "Home", null, null); 
Html.ActionLink("Hello World", "HelloWorld", "Home", new { arg = 0 }, null); 

이들은 모두 똑같은 결과가 있습니다. 후행 슬래시가있는 경우 제대로 작동하며 그렇지 않은 경우 http://localhost:xyz/으로 연결됩니다.

누구든지이 동작이나 해결 방법을 설명 할 수 있습니까?

편집 (아마도 관련?) :
arg가 존재하지 0, 같은 페이지가 http://localhost:xyz/HelloWorld/arg에 표시하고, (완벽하게 잘 작동)은 "안녕하세요"링크와 유사한 링크가있다 그것은 완벽하게 작동합니다.

Html.ActionLink("Argument", "HelloWorld", "Home", new {arg = arg}, null); 

이없이 슬래시가 존재하는지 여부, 올바르게 자체를 가리킨다.

ROUTES :

routes.MapRoute(
    "HomeStart", 
    "", 
    new { controller = "Home", action = "Index" } 
); 

routes.MapRoute(
    "Hello World", 
    "HelloWorld/{arg}", 
    new {controller = "Home", action = "HelloWorld", arg = ""} 
); 
+1

경로 설정 방법을 확인할 수 있습니까? –

+0

귀하의 인수는 선택 사항으로 설정해야합니다 – diaho

+0

@ M.Babcock 경로가 추가되었습니다 – yoozer8

답변

0

문제가 해결. 나는 논쟁의 유무를 구분했다.

routes.MapRoute(
"Hello World", 
"HelloWorld", 
new {controller = "Home", action = "HelloWorld"} 
); 

routes.MapRoute(
"Hello World With Arg", 
"HelloWorld/{arg}", 
new {controller = "Home", action = "HelloWorld", arg = ""} 
); 
관련 문제