문제

미리보기 5를 사용하여 ActionLink를 만드는 데 문제가있는 문제가 있습니다. 찾을 수있는 모든 문서는 이전 일반 버전을 설명합니다.

페이지 /작업의 작업 목록에 링크를 구성하고 있습니다. 각 작업에는 안내가 있으며/작업/세부 사항/{Guid} 링크를 구성하여 작업에 대한 세부 정보를 표시 할 수 있습니다. 작업 컨트롤러에는 인덱스 컨트롤러와 세부 사항 컨트롤러가 있습니다. 세부 사항 컨트롤러는 안내를합니다. 나는 이것을 시도했다

<%= Html.ActionLink(job.Name, "Details", job.JobId); %>

그러나 URL "/jobs/details"를 제공합니다. 내가 여기서 무엇을 놓치고 있습니까?


당신의 도움으로 해결되었습니다.

경로 (캐치 아웃 경로 앞에 추가) :

routes.Add(new Route("Jobs/Details/{id}", new MvcRouteHandler())
{
Defaults = new RouteValueDictionary(new
    {
    controller = "Jobs",
    action = "Details",
    id = new Guid()
    }
});

액션 링크 :

<%= Html.ActionLink(job.Name, "Details", new { id = job.JobId }) %>

HTML 앵커의 결과 :

http : // localhost : 3570/webSiteadMinistration/details? id = 2DB8CEE5-3C56-4861-AEA9-A34546EE2113

따라서 혼란스러운 경로. 웹 사이트 관리자 앞에서 작업 경로 정의를 옮겼으며 지금은 작동합니다. 분명히, 내 경로 정의가 빨라집니다. 더 많은 예를 읽어야합니다.

참고로, 내 링크는 표시되지 않았으며, QuickWatches는 작동하지 않았으며 (익명 유형의 표현을 빠르게 워치 할 수 없음) 여기서 무슨 일이 일어나고 있는지 알아 내기가 훨씬 어려워졌습니다. 매우 작은 오타로 인해 액션 링크가 표시되지 않았다는 것이 밝혀졌습니다.

<% Html.ActionLink(job.Name, "Details", new { id = job.JobId })%>

다시 나를 데려 갈거야.

도움이 되었습니까?

해결책

이것을 찍으십시오 :

<%= Html.ActionLink(job.Name, "Details", new { guid = job.JobId}); %>

여기서 "Guid"는 경로에서 매개 변수의 실제 이름입니다. 이렇게하면 job.jobid 속성의 값을 경로 정의의 Guid 매개 변수에 배치하려는 라우팅 엔진을 지시합니다.

다른 팁

Global.asax.cs 파일에서이를 처리 할 경로를 정의 했습니까? 기본 경로는 {컨트롤러}/{action}/{id}입니다. 프레임 워크가 "ID"에 자동으로 맵핑되지 않는 "jobid"를 통과하고 있습니다. 이 경우를 명시 적으로 처리 할 수있는 경로를 정의하거나 정의하도록 이것을 변경해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top