2013-04-16 2 views
1

조치 방법을 작성하지 않고 cshtml 페이지를보기로 제공 할 수 있습니까?조치 방법이없는 cshtml/view

그래서 내가 Help라는 컨트롤러와 Money.cshtml이라는 뷰를 가지고 있다면 액션 메소드를 작성하지 않고 localhost/help/money로 액세스하려고합니까?

+1

조치 방법을 쓰지 않는 목표는 무엇입니까? 이 URL은 URL 관리 (즉, 'localhost/help/money'라는 정확한 URL)를 목적으로 했나요? 아니면 단순히 컨트롤러에 액션 메소드를 작성하고 싶지 않습니까? View를 같은 이름으로 렌더링하는 것만을 수행하는 액션 메소드를 작성하는 것은 쉽습니다. –

+0

액션 메소드를 모두 작성한 경우 리턴 뷰를 작성하고 싶지 않습니다. 정적 인 페이지가 많아서 내 견해와 동일한 장소에 속한 것처럼 보입니다. – orangesherbert

답변

3

다음과 같이 할 수 있습니다. 는 하나 개의 동작 예컨대 :

routes.MapRoute(
    "Help_default", // Route name 
    "help/{path}", // URL with parameters 
    new { controller = "About", action = "Page" } 
); 

그런 다음 당신의 도움이 컨트롤러는 다음과 같이 수에 매핑 경로를 정의합니다. 기본적으로 URL에서 경로를 가져 와서 해당 모델을보기로 전달합니다. 기본적으로 뷰가 해당 경로 여부에 존재하는지 확인

@model string 

@{ 
    string viewPath = string.Format("~/Views/Help/{0}.cshtml", Model); 
    ViewEngineResult result = ViewEngines.Engines.FindView(this.ViewContext.Controller.ControllerContext, viewPath, null); 
    if (result.View != null) 
    { 
     @Html.Partial(viewPath) 
    } else { 
     // Define a not found view in the shared folder? 
     @Html.Partial("NotFound") 
    } 
} 

:

public class HelpController : Controller 
{ 
    public ViewResult Page(string path) 
    { 
     return View("Page", path); 
    } 
} 

귀하의 페이지 뷰는 다음과 같이 할 수있다. 그것은 약간 더럽다고 느낀다. 그러나 나는 그것이 일할 것이다라고 생각한다.