2013-11-03 2 views
1

asp.net "Url.Action"에 대한 흥미로운 동작을 보았습니다.MVC Url.Action은 다른 페이지에서 다르게 동작합니다.

<a href="@Url.Action("Index", "Soru")" >@baslik</a>과 같은 링크는 클라이언트 브라우저에서 <a href="/Soru/Index">denemebaslik</a>으로 표시되며이 링크를 클릭하면 대상 페이지로 이동합니다. 클라이언트 브라우저에서 <a href="@Url.Action("Index", "Soru")" >@baslik</a> 같은 링크가 보이는이 대상 페이지에서

<a href="/Soru/Index/29271654-e19a-4096-8795-3283d8a208ed">denemebaslik</a>

@Url.Action는 다른 페이지에서 다른 동작합니다. 내 경로 구성은 다음과 같습니다.

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{*id}", 
      defaults: new { controller = "Giris", action = "Index", id = UrlParameter.Optional } 
     ); 

이유는 무엇입니까?

+0

메서드 호출에 여분의 매개 변수를 전달하지 않는다고 확신합니까? 바둑판을 수정하고있는 페이지에서 실행중인 모든 JS? – glosrob

+0

추가 매개 변수를 조작하거나 전달하는 js 조치가 없습니다. 나는 방화 녀석에서 검사했다, 연결은 이것 같이 보인다. 이 동작은 경로 구성을 변경 한 후에 시작되었습니다. – serefbilge

+1

MVC는 현재 페이지의 쿼리 문자열에서 매개 변수를 선택하고 기본적으로 기존 매개 변수를 그대로 유지하면서 동일한 경로에 대한 링크를 렌더링 할 때 매개 변수를 포함합니다. guid (2927 ...)가 쿼리 문자열에 나타 납니까? 그렇다면 MVC가이를 가져옵니다. – SimonGoldstone

답변

2

MVC는 현재 페이지의 쿼리 문자열에서 매개 변수를 선택하고 기본적으로 기존 매개 변수를 유지하면서 동일한 경로에 대한 링크를 렌더링 할 때 매개 변수를 포함합니다.

발생하는 시나리오 인 경우 의도적으로 설계된 것입니다. 즉, 액션 링크가 페이지 자체를 가리키는 상황에서는 매개 변수가 이미 있습니다. 예를 들어 '오름차순/내림차순 정렬'링크가있는 경우 매번 인코딩하지 않아도 다른 매개 변수 (예 : 가격/설명)가 링크에 계속 포함됩니다. 이 익명의 유형이기 때문에 당신이 매개 변수에 null를 할당 할 수 없습니다이

<a href="@Url.Action("Index", "Soru", new { id = "" })">@baslik</a>

주와 같은

당신이 빈 문자열로 매개 변수를 지정, 추가 매개 변수를하지 않으려면. 빈 문자열은 잘 작동합니다.

는 덧붙여, 당신이 알고 확신 해요,하지만 당신은 너무 더 편리 @Html.ActionLink 사용할 수 있습니다

@Html.ActionLink(baslik, "Index", "Soru", new { id = "" })">

희망이 당신을 도와줍니다.

관련 문제