ฉันมีสิ่งที่น่าสนใจฉันคิดว่าฉันอาจเพิ่ม ฉันพัฒนาแอปพลิเคชันที่เคยโหลดมุมมองแบบเต็มครั้งเดียวเท่านั้น จากจุดนั้นไปข้างหน้ามันสื่อสารกลับไปที่เซิร์ฟเวอร์ด้วย 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 ที่เหมาะสม :)
แจ้งให้เราทราบว่าคุณคิดอย่างไรกับลูกผสมของฉัน!