MVC의 DisplayTemplates를 사용하여 JSON 아약스 응답의 일부로 포함 된 HTML 형식을 지정하고 싶습니다.다음 중보기를 컨트롤러 외부의 문자열로 렌더링하는 기본 방법은 무엇입니까?
HTML은 컨트롤러 외부에서 생성되는 AjaxJsonResult
클래스 (광산)의 일부로 반환되므로, 컨트롤러 기반의 간단한 컨트롤러 기반의 RenderViewToString() 메서드를 사용하고 싶지 않습니다.
나는 이것을 할 수있는 4 가지 방법을 찾았지만 그들 중 누구도 나를 기쁘게 생각하지 않습니다. 그리고 나는 사용하기에 가장 좋은 것이 무엇인지를 아는 것이 내 판단에서 벗어났다. 내 눈에는 지나치게 복잡하게 보이고 (1, 4) 지나치게 냄새가 났거나 (2) 지나친 오버 헤드가 있습니다 (3).
누구도 가장 효율적일 수 있습니다/사용하는 것이 가장 좋을 것이라고 제안 할 수 있습니까? 나는 각자의 찬반/반대를 평가할 경험이 없다.
1. 내가 RazorEngine를 사용하는 계획했던
RazorEngine - 나는 그것을 연구하고, it seemed simple enough는 :
Razor.Parse("DisplayTemplates/MyModel.cshtml", model)
하지만 그 방법은 사용되지 않는 것으로 내놓았다. 내가 the docs을 보았을 때, 꽤 많은 '변화가 일어났습니다'. 내가 캐싱을 어떻게해야, 때 등, 디스크에서 읽을 내가 구현하는 방법을 주위에 내 머리를 얻기 위해 고군분투
2. RenderViewToString() - 매개 변수로 컨트롤러를 전달
체인을 다른 코드로 넘어가는 것이 지저분한 것처럼 보이기 때문에이 작업을 정말로하고 싶지는 않습니다.
3.
는하나의 옵션이 FakeController (this question에 허용 대답)를 만드는 것입니다 가짜 컨트롤러를 만들고 있지만, 이것은 조금 잔인한 것 같다. 어디에서 보았는지는 기억이 나지 않지만 성능이 좋지 않다고 읽습니다.
4.
는 BuildStarted에 가상 경로 제공This is another approach I saw로, 클래스를 렌더링합니다. 다시 말하지만, 나는 여기서 내 깊이를 벗어났다. 그래서이 접근법의 장점과 단점이 무엇인지 말할 수 없다.