2009-04-21 5 views
2

컨트롤러 경로를 얻으려면 어떻게해야합니까? 예를 들어,이 같은 Html 헬퍼의 경로를 얻을 수 있습니다 :ASP.NET-MVC의 컨트롤러 경로

private static string GetVirtualPath(HtmlHelper htmlhelper) 
    { 
     string virtualPath = null; 
     TemplateControl tc = htmlhelper.ViewDataContainer as TemplateControl; 

     if (tc != null) 
     { 
      virtualPath = tc.AppRelativeVirtualPath; 
     } 

     return virtualPath; 
    } 

답변

1

당신이보기에 대한 상대적인 영문 이름이 리턴이 방법은 - 그게 정말 Html 헬퍼의 위치 아니다.

컨트롤러의 경로를 원할 때 실제로 무엇을 의미합니까? 귀하의 컨트롤러는 어셈블리 어딘가에 컴파일 된 클래스입니다. 컨트롤러에 대한 소스 .cs 파일의 위치를 ​​가져 오시겠습니까? 아니면 다른 무엇입니까?

5

편집 : 다음은 컨트롤러가있는 어셈블리의 경로와 컨트롤러 동작이있는 클래스의 형식 이름을 지정합니다. 어쩌면 이것들의 조합으로 너를 쫓아 낼거야, 아론? 당신은 '표준'ASP.NET MVC의 방법으로 컨트롤러를 배치하고 이름이 제공

file:///C:/Projects/TestApp/TestApp.UI/bin/TestApp.UI.DLL 
TestApp.UI.Controllers.TestController 

같은 그들은 항복

string assemblyPath = Assembly.GetExecutingAssembly().CodeBase; 
string typeName = this.GetType().FullName; 

, 예를 들어, 뭔가의 특정 조합은 위의 당신에게 줄 수도

C:/Projects/TestApp/TestApp.UI/Controllers/TestController.cs 

또는 상대 경로 :

Controllers/TestController.cs 
012은 C# 파일에 대한 올바른 전체 경로 TestController의 색인 작업 ( http://localhost:50027/Test/Index)의 요청에 대한

1) string path = Request.Url.AbsolutePath 

2) string appPath = Request.ApplicationPath; 
    string absPath = Request.Url.AbsolutePath; 
    string path = appPath.Length <= 1 ? 
     absPath : absPath.Replace(appPath, ""); 

예 : 3,516,


다음은 컨트롤러 액션에 대한 경로를 줄 것이다 위의 반환을

1) /Test/Index 
2) /Test/Index 

을 웹 사이트에 대한 기본 URL이 http://localhost:50027/blog 인 경우, TestController의 색인 동작 요청 예 (http://localhost:50027/blog/Test/Index) : 위의 결과는

입니다.
1) /blog/Test/Index 
2) /Test/Index 
0

당신은 당신이있어 같은 소리, 당신은 방법

ResolveClientUrl("~/<ControllerName>") 
+0

수동으로 URL을 작성하면 안됩니다. 필요한 경우 RouteTable.Routes를 사용하여 라우팅합니다. –

0

아론을 사용하여 경로를 해결할 수있는 컨트롤러 명을받은 후이

Url.RequestContext.RouteData.Values["controller"] 

같은 컨트롤러의 이름을 얻을 수 있습니다 ㅎ, ㅎ,하지만 이건 단위 테스트 스 캐 폴딩이나 뭔가를위한 거라고 생각해? 어쩌면 당신이하고있는 일에 대해 빌드 스크립트를 사용하고 싶을 수도 있습니다. 빌드 할 때 컨트롤러 디렉토리의 일부 프로세스를 실행하는 프로젝트 속성 페이지에 몇 가지 명령을 넣을 수 있습니까? 미안 당신이하려는 일이 전혀 없다면.

관련 문제