当用户单击 MVC5 中的浏览器后退按钮时在检索数据时面临问题

Facing issue in retrieving data when user clicks on browser back button in MVC5

当用户提交数据并检索包含 hyperlink 的 html 数据时,我正在处理页面。 现在,当用户单击 link 时,他将被导航到另一个页面,当用户单击浏览器后退按钮时,我想显示之前显示的 html 数据。 为了实现这一点,我尝试将值存储在会话中并在用户单击后退浏览器按钮时检索它。

但我遇到了问题

  1. 我尝试捕获浏览器后退按钮并显示会话存储变量,但我不确定为什么没有触发。

    $(window).on('hashchange', 函数 () { $("#spanId").html("测试"); });

  2. Html 存储在会话变量中的数据显示不正确,如“<”显示为“<”,所有数据显示为字符串而不是 html 内容.

    $(document).ready(function () {
    
             $("#spanId").html("@Session["Data"]");
    
              $("#btnSubmit").click(function () {
                   var data = {
                         "Date": $.datepicker.formatDate("mm-dd-yy", DateVal),
                         "Type": $('#type').val(),
                     }
    
                     $.ajax({
                         type: 'POST',
                         dataType: "json",
                         contentType: "application/json; charset=utf-8",
                         data: JSON.stringify(data),
                         url: '@Url.Action("GetReportdata", "Reports")',
                         success: function (result) {
                             $("#spanId").html(content);
                           },
                         error: function (xhr, ajaxOptions, thrownError) {
    
                         }
                     });
             });
    
     });
    
     Please let me know if there is any other way to handle this and help me resolves this issue.
    

可能有另一种方法可以在服务器端解决这个问题,但这应该可行。

$(document).ready(function () {
     $("#spanId").html(decodeHtml("@Session["Data"]"));
     $("#btnSubmit").click(function () {
           var data = {
                "Date": $.datepicker.formatDate("mm-dd-yy", DateVal),
                "Type": $('#type').val(),
            }
            $.ajax({
                 type: 'POST',
                 dataType: "json",
                 contentType: "application/json; charset=utf-8",
                 data: JSON.stringify(data),
                 url: '@Url.Action("GetReportdata", "Reports")',
                 success: function (result) {
                     $("#spanId").html(decodeHtml(content));
                 },
                 error: function (xhr, ajaxOptions, thrownError) {
                 }
             });
     });

 });

function decodeHtml(encodedHtml) {
    return encodedHtml.replace(/&amp;/g,'&')
        .replace(/&lt;/g,'<').replace(/&gt;/g,'>');
}

我找到了一个事件来处理浏览器后退按钮

  if (window.performance && window.performance.navigation.type == 

    window.performance.navigation.TYPE_BACK_FORWARD) {
    
         $("#spanId").html("@Session["Data"]");
    }

这对我有用