2009-12-04 77 views
0

我有一個帶搜索框和一個按鈕的主頁。驗證視圖狀態MAC在主頁面上失敗

我點擊搜索按鈕,然後進入結果頁面。

結果頁面中也有一個搜索按鈕,當我點擊它,我得到的錯誤Validation of viewstate MAC failed

<% using(Html.BeginForm("Result", "Search")){ %> 
<%= Html.TextBox("SearchText", Model.SearchText)%> 
<input value="" type="submit"/> 

兩個頁面包含上面的一段代碼。

如果我對這兩個頁面使用相同的母版頁,我不會收到錯誤消息。如果他們使用不同的母版頁,我會得到錯誤。

我已關閉enableEventValidation和viewStateEncryptionMode,我仍然收到錯誤。

UPDATE

當我按在兩個視圖按鈕,ActionResult的就是所謂的意見,收集數據,但是當我說返回查看(myFormViewModel)我得到的錯誤。

所以,就控制器而言,我認爲一切都很好。

+0

您是否使用某種類型的cookie來實現成員資格和用戶狀態管理?它的聲音很奇怪,因爲MVC不會使用ViewState。 – JOBG

+0

不,我目前沒有使用任何會員資格。在這個早期階段沒有實施。 – griegs

+0

mmm ..您是否添加了MVC View Master Page或傳統的母版頁??我認爲它必須是MVC版本,如果這不是問題,我真的不知道它會是什麼,特別是因爲它涉及ViwState .. – JOBG

回答

1

您的頁面或主頁面是否包含任何聲明性控件?通常,這些元素在標記中的某處具有runat =「server」

如果您使用內置的反XSRF助手,您也可以看到此錯誤。如果您有用[ValidateAntiForgeryToken]修飾的動作,請確保發佈的任何表單包含對Html.AntiForgeryToken()的調用。

+0

以上都不是。我不使用runat =「server」與我的mvc項目。事實上,母版頁根本不包含任何控件。 – griegs

+0

我剛剛嘗試<%= Html.AntiForgeryToken()%>與[ValidateAntiForgeryToken]結合使用,但都不行。 – griegs

+0

想要給你答案,因爲你是對的。應該更仔細地閱讀我的代碼。 – griegs

0

啊,我的錯。

我完全錯過了第二個master上的<form標籤,這意味着第二個master上的表單中有一個表單。

真讓人氣憤!

對不起大家。