2016-10-03 3 views
2

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로, 클래스를 렌더링합니다. 다시 말하지만, 나는 여기서 내 깊이를 벗어났다. 그래서이 접근법의 장점과 단점이 무엇인지 말할 수 없다.

답변

0

글쎄, 당신이 무엇을 하든지, 일반적인 원칙은 코드를 최소화하는 것입니다. 면도기는 정확한 것을합니다. MVC와 함께 작동하도록 설계되었으므로 코드를 적게 입력하면 적은 양의 코드와 렌더링의 양을 줄일 수 있습니다. 나는 면도 방법을 제안 할 것이다.

첫 번째 것이 최선의 방법입니다. 나머지는 약간의 잔인한 것처럼 보입니다. 이것은 개인적인 견해이며, 여기서 절대적인 모범 사례는 없다고 생각합니다.