내가 추가 할 것이라고 생각했던 흥미로운 것이 있습니다. 한 번만 전체 뷰를로드 한 애플리케이션을 개발했습니다. 그 시점부터는 Ajax만으로 서버와 다시 통신했습니다. 한 페이지 만로드하면됩니다 (내 이유는 중요하지 않습니다). 흥미로운 부분은 자바 스크립트에서 작동 할 일부 데이터를 반환하고 표시 할 부분보기를 특별히 필요로한다는 것입니다. 나는 이것을 두 가지 별도의 액션 메소드에 대한 두 번의 호출로 나눌 수 있었지만 조금 더 재미있는 것을하기로 결정했습니다.
확인 해봐:
public JsonResult MyJsonObject(string someData)
{
return Json(new { SomeData = someData, PartialView = RenderPartialViewToString("JsonPartialView", null) }, JsonRequestBehavior.AllowGet);
}
물어볼 RenderPartialViewToString ()은 무엇입니까? 바로이 차가움의 작은 덩어리입니다.
protected string RenderPartialViewToString(string viewName, object model)
{
ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
나는 이것에 대한 성능 테스트를 수행하지 않았으므로 JsonResult 및 ParticalViewResult에 대해 하나의 액션 메소드를 호출하는 것보다 오버 헤드가 발생하는지 확실하지 않지만 여전히 멋지다고 생각했습니다. 부분 뷰를 문자열로 직렬화하고 매개 변수 중 하나로 Json과 함께 보냅니다. 그런 다음 JQuery를 사용하여 해당 매개 변수를 가져 와서 적절한 DOM 노드에 넣습니다. :)
내 하이브리드에 대해 어떻게 생각하는지 알려주세요!