2010-01-22 43 views
0

好的,所以問題如下:我使用jQuery的AJAX爲了使頁面內的場景調用(諸如投票項目等事件)和更改內容在適當的元素。當我將AJAX與ASP.net的AJAX混合使用時,更準確地說,當我嘗試在頁面上使用jQuery來執行操作時執行回發後,就會出現問題。頁面的viewstate被改變並且驗證失敗(事實上這看起來有點正常)。ASP.net viewstate更改驗證和jQquery AJAX

我的問題是:我可以以某種方式禁用驗證,以便我可以執行回傳與chaged page viewstate相結合?到目前爲止搜索如何禁用它沒有結果。

一個更實用的例子是在評論頁面上,我允許投票評論和張貼新評論。因此,如果用戶投票發表評論,然後張貼自己的評論,那麼頁面內容會發生變化,從而驗證失敗。另外,我試過將評論表單放置在更新面板中,以防止整個頁面發佈,但仍然失敗。

當然,我可以使用替代路線,並有不同的頁面來處理事件,只需通過jQuery的AJAX調用它,但我想知道是否可以通過結合使用ASP.net和jQuery來做到這一點。

在此先感謝。

回答

1

如果要禁用視圖狀態驗證,可以使用Page.EnableViewStateMac = false將其設置爲頁面或配置級別。

http://msdn.microsoft.com/en-us/library/system.web.ui.page.enableviewstatemac.aspx

這不一定是個好主意,但因爲驗證功能有沒有從視圖狀態篡改,你會關閉,以保護...

如果你正在運行與問題由於jQuery ajax調用無效的viewstate,一個選項是考慮使用Ajax控件,例如UpdatePanel。您可以包裝某些控件並將UpdatePanel標記爲有條件以確保小型往返。這不會干擾viewstate,並允許您同時繼續使用viewstate驗證和ajax。

可能有方法使用jQuery ajax調用,而不會干擾視圖狀態驗證。其他人可能會強調這種方法。

+0

謝謝你的回覆。正如我上面提到的,我沒有使用UpdatePanel,但我不確定UpdateMode默認情況下設置爲條件(特別是因爲我沒有更改它)。我知道viewstate的驗證,但在這種特殊情況下,我可以負擔得起,因爲應用程序不是以安全爲中心,而是以用戶體驗爲中心(並且我在服務器端有其他自定義安全機制)。 再次感謝您。我會試試:) – mtranda 2010-01-22 19:23:57

+0

沒問題。如果它符合你的需求,那麼是禁用EnableViewStateMac應該這樣做。我以前用過這個成功.. – 2010-01-22 19:34:59