簡體   English   中英

如何通過AJAX加載MVC 4應用程序的第一頁?

[英]How can I load the first page of an MVC 4 application via AJAX?

如何通過AJAX加載MVC 4應用程序的第一頁?

我已經有了結構設置來加載所有后續頁面,但我剛剛碰到了一堵磚牆。

通過history.js添加歷史記錄管理后,我已將部分視圖更改為具有后退按鈕 - 按預期工作。

我的問題是,在導航到幾頁然后按下后退按鈕后,當我到達Windows歷史記錄中的第一項時 - 即:index.chtml頁面 - 此頁面加載導航欄出現兩次。 按F5后,頁面正確加載。

我做錯了什么,解決這個問題的最佳方法是什么?

在此先感謝您的幫助

順便說一句,這是我在布局視圖上加載的JavaScript:

$(function () {

var contentShell = $('#bodyContent');

var History = window.History, State = History.getState();

$(".ajaxLink").on('click', function (e) {        
    e.preventDefault();
    var url = $(this).data('href');
    var title = $(this).data('title');
    History.pushState(null, title, url);
});

History.Adapter.bind(window, 'statechange', function () {
    State = History.getState();       
    navigateToURL(State.url);
});

function navigateToURL(url) {        
    $.ajax({
        type: "GET",
        url: url,
        dataType: "html",
        success: function (data, status, xhr) {
            contentShell.html(data);
        },
        error: function (xhr, status, error) {
            alert("Error loading Page.");
        }
    });
}   

$('.history-back').on('click', function (e) {        
       e.preventDefault();
       History.back();
       return false;
})   
});

這看起來就像一個已知問題,與在某些瀏覽器中觸發兩次的點擊事件相關的錯誤。 此行為導致代碼中的History.pushState(...)執行兩次。

你可以嘗試添加某事。 喜歡e.stopPropagation()之后你的代碼。 有關該問題的更多信息,請訪問: https//stackoverflow.com/a/21511818/2270888

在“第一項”控制器操作中嘗試這樣的操作:

public ActionResult Index()
{
   if (Request.IsAjaxRequest())
   {
       return PartialView();
   }

   return View();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM