• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 668
  • Last Modified:

Validation of viewstate MAC failed

This error has just started today, it worked fine as recently as yesterday so I don't know if it was caused by a windows update (last night was weekly server maintenance night which includes updates).
This affects both the production server and my workstation where I develop.

The page loads fine but when I click the edit column on the gridview I get this error:
Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.

After Googling I found this page http://forums.asp.net/p/955145/1173230.aspx#1173230
I have done as suggested there which is to add  enableEventValidation="false" viewStateEncryptionMode ="Never" to the page directive but when I do that I get a new error:
Multiple controls with the same ID 'txtStartDate' were found. FindControl requires that controls have unique IDs.

Which is not the case! There is only one control named that, the only other place it is mentioned is for a validatorcontrol which points to this text box as the control to validate.
0
QPR
Asked:
QPR
  • 2
  • 2
1 Solution
 
samtran0331Commented:
can you post your gridview?
0
 
QPRAuthor Commented:
Below, let me know if you need the rest of the page code.
As I said working fine up until a particular day and then flop!

 <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource3" CellPadding="4" ForeColor="#333333" GridLines="None" Width="672px" AutoGenerateColumns="False" DataKeyNames="NoticeID">
        <Columns>
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
            <asp:BoundField DataField="NoticeID" HeaderText="NoticeID" InsertVisible="False" ReadOnly="True" SortExpression="NoticeID" Visible="False" />
            <asp:BoundField DataField="NoticeText" HeaderText="Notice" SortExpression="NoticeText" />
            <asp:TemplateField HeaderText="StartDate">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtStartDate" runat="server" Text='<%#Bind("StartDate", "{0:dd/MM/yyyy}") %>' />
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblStartDate" runat="server" Text='<%#Eval("StartDate", "{0:dd/MM/yyyy}") %>' />
                    </ItemTemplate>
           </asp:TemplateField>
           <asp:TemplateField HeaderText="StartDate">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtStartDate" runat="server" Text='<%#Bind("ExpiryDate", "{0:dd/MM/yyyy}") %>' />
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblStartDate" runat="server" Text='<%#Eval("ExpiryDate", "{0:dd/MM/yyyy}") %>' />
                    </ItemTemplate>
           </asp:TemplateField>
            <asp:BoundField DataField="ExpiryDate" HeaderText="Expiry Date" SortExpression="ExpiryDate" />
        </Columns>
        <FooterStyle BackColor="#5D7B9D" ForeColor="White" Font-Bold="True"></FooterStyle>
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333"></RowStyle>
            <EditRowStyle BackColor="#FFFFC0"></EditRowStyle>
            <SelectedRowStyle BackColor="#E2DED6" ForeColor="#333333" Font-Bold="True"></SelectedRowStyle>
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center"></PagerStyle>
            <HeaderStyle BackColor="Silver" ForeColor="MidnightBlue" Font-Bold="True"></HeaderStyle>
            <AlternatingRowStyle BackColor="White"></AlternatingRowStyle>
    </asp:GridView>
0
 
samtran0331Commented:
>>I get a new error:
>>Multiple controls with the same ID 'txtStartDate' were found. FindControl requires that controls
>>have unique IDs.

In the above, the StartDate column and the ExpiryDate column both have textboxes named "txtStartDate" in their edititemtemplates....

try:

            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4"
                DataKeyNames="NoticeID" DataSourceID="SqlDataSource3" ForeColor="#333333" GridLines="None"
                Width="672px">
                <Columns>
                    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
                    <asp:BoundField DataField="NoticeID" HeaderText="NoticeID" InsertVisible="False"
                        ReadOnly="True" SortExpression="NoticeID" Visible="False" />
                    <asp:BoundField DataField="NoticeText" HeaderText="Notice" SortExpression="NoticeText" />
                    <asp:TemplateField HeaderText="StartDate">
                        <EditItemTemplate>
                            <asp:TextBox ID="txtStartDate" runat="server" Text='<%#Bind("StartDate", "{0:dd/MM/yyyy}") %>'>
                            </asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="lblStartDate" runat="server" Text='<%#Eval("StartDate", "{0:dd/MM/yyyy}") %>'>
                            </asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="ExpiryDate">
                        <EditItemTemplate>
                            <asp:TextBox ID="txtExpiryDate" runat="server" Text='<%#Bind("ExpiryDate", "{0:dd/MM/yyyy}") %>'>
                            </asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="lblExpiryDate" runat="server" Text='<%#Eval("ExpiryDate", "{0:dd/MM/yyyy}") %>'>
                            </asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
                <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                <EditRowStyle BackColor="#FFFFC0" />
                <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                <HeaderStyle BackColor="Silver" Font-Bold="True" ForeColor="MidnightBlue" />
                <AlternatingRowStyle BackColor="White" />
            </asp:GridView>

Open in new window

0
 
QPRAuthor Commented:
well spotted thanks!
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now