Tuesday, April 22, 2014

Return Result in Json string using RazorViewToString In MVC.


string result = RazorViewToString.RenderRazorViewToString(this, "~/Views/BuyRequestDetails/_createFAQ.cshtml", Model);

also set JsonRequestBehavior.AllowGet at return time




public static string RenderRazorViewToString(this Controller controller, string viewName, object model)
        {
            if (controller == null)
            {
                throw new ArgumentNullException("controller", "Extension method called on a null controller");
            }
            if (controller.ControllerContext == null)
            {
                return string.Empty;
            }
            controller.ViewData.Model = model;

            ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
            if (viewResult != null)
            {
                using (var sw = new StringWriter())
                {
                    // var viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
                    var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
                    viewResult.View.Render(viewContext, sw);
                    viewResult.ViewEngine.ReleaseView(controller.ControllerContext, viewResult.View);
                    return sw.GetStringBuilder().ToString();
                }
            }
            return null;
        }


Notes :

Give Full path of view name when call this function in parameter other wise when it will find 
two view with same name in different folders at that time it will throw exception.

No comments:

Post a Comment