2012-11-05 7 views
1

컨트롤러 이름없이 URL을 생성하고 싶습니다. 나는 아래의 코드 ...UrlHelper.Action은 컨트롤러없이 URL을 생성합니다.

@Url.Action("d", null, new { id = Model.DownloadId }) 

를 사용하는 경우 ... 나는이

http://localhost:814/d/11234 

내 경로 코드와 같은 URL을 좀하고 싶습니다이

http://localhost:814/DefaultController/d/11234 

같은 URL을 얻을 ..

routes.MapRoute("Download result form", "d/{id}", new { controller = "Result", action = "DownloadForm" }); 

... 위와 같은 URL을 처리합니다 (Action ID없이 컨트롤러 이름) 완벽하게.

+0

MVC는 기본 컨트롤러가 사이트의 루트라고 가정합니다. 호스트 이름없이 컨트롤러를 기본 라우트로 정의하는 사용자 정의 라우트를 만들거나 href를 직접 만들 수 있습니다. href='/d/@Model.DownloadId ' – Maess

+0

기본 컨트롤러가 라우트에 설명되어 있습니다. 업데이트 된 답변. – Tomas

+0

미안하지만 첫 제안을 이해하지 못하고, 나 자신도 URL을 작성하는 것이 MVC 세계에서 조금 이상하게 보입니다. MVC 헬퍼를 사용하여 URL을 생성하려면 솔루션의 종류가 있어야합니다. – Tomas

답변

0

이렇게하면 이러한 동작이 다른 컨트롤러에 바인딩하는 것과 충돌하게됩니다.

깨끗한 URL을 원하는대로 만들려면 액션 이름을 생략하는 것이 더 일반적입니다. 그게 다른 경로로 잡고되고 작동하지 않는 경우이 페이지 stackoverflow/questions/{id}

UPDATE

는, 즉,이 선택되는 경로를 알 수 있도록 작업에

@Url.Action("DownloadForm", "Result", new { id = Model.DownloadId }) 

을 컨트롤러를 제공 그래서 당신의 노선의 순서는 당신이 원하는대로가 아닙니다.

+0

동의. 나는 OP가 어떤 컨트롤러의 외부에있는 리소스를 원하고 있다고 생각했다. – Maess

+0

내 게시물을 업데이트했습니다. 그것은 내가 맞춤 경로를 가지고 있기 때문에 내 업데이트 된 답변을 확인하지 않습니다. – Tomas

+0

아, 업데이트 답변 – dove

관련 문제