【问题标题】:How to reload page from Controller JsonResult Action method如何从 Controller JsonResult Action 方法重新加载页面
【发布时间】:2020-06-27 00:51:12
【问题描述】:

寻找一种从 JsonResult Action 方法重新加载/刷新视图页面的方法。 我需要从其他条件重新加载它。 下面的一个不起作用,我的意思是它不会刷新 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);

        }

    }

【问题讨论】:

  • 这个动作是通过 ajax 调用的吗?您是否希望视图重定向到另一个视图,然后在重定向视图上使用 json?

标签: c# asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

在 MVC 中以 JSON 形式返回部分视图

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();
        }
    }
}

现在您可以通过将“this”作为参数传递给控制器​​,在控制器文件中添加命名空间来从控制器调用此类。

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

希望这会有所帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-09
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2011-08-14
    • 2019-04-07
    相关资源
    最近更新 更多