好吧我試着用下面的兩個解決方案,但他們都很糟糕。這是我現在正在做的,但仍然不是很好,但我有Sitefinity,MVC和JQuery Mobile都在同一頁面上,表單不再給我View State Exceptions。
首先,添加data-ajax =「false」是不夠的,爲此,您需要在JQuery Mobile啓動之前禁用Ajax。因此,爲此,您需要在加載JQuery Mobile File之前添加此腳本,但在加載JQuery文件之後。
$(document).bind("mobileinit", function() { $.mobile.ajaxEnabled = false; });
這樣做我那麼不使用Sitefinity開始表格後,我只是jQuery來改變主網頁上的表格有正確的行動。
<script>
$("#aspnetForm").attr("action", "Home/Login");
</script>
一起,這意味着有每一頁變化的完整的頁面加載,並形成崗位使用我的WebForms母版頁聲明的形式。
-old答案 - 其實...我有什麼下面是行不通的。我現在做的 真的很難看,但通常工作。
只要用戶從主頁進入網站,然後家裏的 頁是Jquery Mobile的首頁。 I 獲得的視圖狀態錯誤是因爲它將當前頁面看作是第一頁,而提交的表單是活動頁面。如果主頁 的控制器剛設置爲處理所有HTTPPost調用,該怎麼辦?我有 從表格 中刪除了所有視圖中的@ Html.BeginFormSitefinity(),並且僅使用頂級主頁上的表單。然後在視圖上添加 代碼,將此表單的動作更改爲指向 主頁面控制器。前
<script>
$("#aspnetForm").attr("action", "Home/Login");
</script>
一旦我做了這個變化的形式不扔視圖狀態 例外......只要主頁是jQuery Mobile的第一頁。 如果用戶從不同的頁面進入,則全部被加擾。 還沒有答案。
OK,想我已經找到了。我在某處讀過,現在丟失了鏈接,可能導致錯誤消息的問題列表爲 。其中之一是從不同頁面提交的 表單。
我看着我和Fiddler一起收到的錯誤消息,注意到 Referer是我的主頁,但表單發佈的URL是我的表單的頁面的 URL。而不是通過我的網站 瀏覽我的網頁與表格我在地址欄中鍵入的網址。我試過 再次提交我的表單,現在它的工作原理!
所以,這是Sitefinity和JQuery Mobile爭論的問題。
當asp.net MVC在Sitefinity的Hybred模式下運行時,它實際上是 在包含表單的Web.Forms母版頁中運行。當您使用 @ Html.BeginFormSitefinity()將視圖添加到視圖時,它實際上是 只需添加一個div,然後使用AJAX在 Web.Forms母版頁上提交表單。
JQuery Mobile會加載您訪問的第一頁,但後面的頁面 只會注入到現有頁面中。所以,有多個 data-role =「page」div加載到DOM中,位於Sitefinity Web.Forms Master Page內。
這一切都會導致表單以 active data-role =「page」的URL發佈,但服務器發現它正在從我加載的原始頁面引用 。所以,如果我去 的頁面的形式首先都會工作,在任何其他頁面啓動它不 工作。
現在我知道了這一點,我可以在鏈接到 頁面的表單中輸入data-ajax =「false」,並且所有外觀都可以正常工作。這會導致JQuery Mobile不會將目標頁面注入當前頁面,但 會加載全部新的目標頁面。
data-ajax =「false」就是答案!
此外,請確保你不把[的OutputCache(NoStore = TRUE,持續時間= 0,VaryByParam時= 「*」)上的動作。從這得到相同的視圖狀態異常... –