2014-02-13 4 views
2

ASP.net MVC 프로젝트가 있는데 MS가 MVC를 구현하는 방식에 너무 관심이 없으므로 프로젝트를 아주 최소한으로 제거했습니다. 어떤 경로도 정의되어 있지 않고 IHttpHandler을 구현하는 클래스를 가리키는 에 DefaultDocument 항목이 있습니다.리디렉션없이 IHttpHandler에서 면도기 (cshtml) 페이지를 반환

IHttpHandler 클래스에서 Razor .cshtml 파일을 출력하고 싶지만 cshtml 파일에 경로 항목을 만들지 않으므로 사용자를 .cshtml 파일로 리디렉션 할 수 없습니다. PageParser.GetCompiledPageInstance에 대한 많은 리소스를 찾았지만 면도기 뷰 엔진이 아닌 aspx 파일을 대상으로하는 것으로 보입니다.

IHttpHandler 클래스에서 .cshtml 파일을 HttpContext으로 출력 할 때 어떤 수업이 바람직한가요?

public class Main : IHttpHandler{ 
    public void ProcessRequest(HttpContext context){ 
     // 
    } 
} 

답변

5

내가 잘못된 일을 찾고있다 표시 - 비밀 문구는 다음과 같습니다

아래 코드는이 보일 것입니다 꽤 잘 작동하는 문자열

에 면도칼보기를 렌더링 :

public static string GetRazorViewAsString(object model, string filePath) 
{ 
    var st = new StringWriter(); 
    var context = new HttpContextWrapper(HttpContext.Current); 
    var routeData = new RouteData(); 
    var controllerContext = new ControllerContext(new RequestContext(context, routeData), new FakeController()); 
    var razor = new RazorView(controllerContext, filePath, null, false, null); 
    razor.Render(new ViewContext(controllerContext, razor, new ViewDataDictionary(model), new TempDataDictionary(), st), st); 
    return st.ToString(); 
} 

코드 http://forums.asp.net/post/5333141.aspx

에서
관련 문제