Как перезагрузить страницу из метода Controller JsonResult Action - PullRequest
0 голосов
/ 15 марта 2020

Ищите способ перезагрузить / обновить sh страницу просмотра из метода действия JsonResult. Мне нужно перезагрузить его из другого состояния. Нижеследующее не работает, я имею в виду, что оно не обновляет sh представление StudentsData. Этот метод загрузки ниже представляет собой метод GoogleDriveupload, который загружает и отображает загруженный файл.

[HttpPost]
    public JsonResult Upload(string folderName, string contextType = null)
    {
        var currentAuth = Context.UserContextCache;
        var resultList = new List<ViewDataUploadFilesResult>();
        var CurrentContext = HttpContext;
        filesHelper.UploadAndShowResults(CurrentContext, resultList, folderName);
        JsonFiles files = new JsonFiles(resultList);



        if (!resultList.Any())
        {
            return Json("Error");
        }
        else
        {

            currentAuth.UserProfile.IITransferIntakeRequestMade = false;
            Context.UserContextCache = currentAuth;
            GetService<UserProfileService>().Save(Context.UserContextCache.UserProfile);

            //RELOAD SHOULD BE HERE
            RedirectToAction("StudentsData", "Document");

            return Json(files);

        }

    }

1 Ответ

0 голосов
/ 15 марта 2020

Возвращение частичного представления как JSON в MVC

public static class RazorViewToString
{
    public static string RenderRazorViewToString(Controller controller, string viewName, object model)
    {
        controller.ViewData.Model = model;
        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();
        }
    }
}

Теперь вы можете вызывать этот класс из вашего контроллера, добавив NameSpace в ваш файл контроллера следующим образом, передав «this» как параметр для контроллера.

string result = RenderRazorViewToString(this, "ViewName", model);

Надеюсь, это поможет ...

...