2009-08-09 59 views
0

我不断收到此错误如何禁用部分视图ViewState?

System.Web.HttpException was unhandled by user code 
    Message="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." 
    Source="System.Web" 
    ErrorCode=-2147467259 
    StackTrace: 
     at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) 
     at System.Web.UI.ViewStateException.ThrowMacValidationError(Exception inner, String persistedState) 
     at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) 
     at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) 
     at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) 
     at System.Web.UI.HiddenFieldPageStatePersister.Load() 
     at System.Web.UI.Page.LoadPageStateFromPersistenceMedium() 
     at System.Web.UI.Page.LoadAllState() 
     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
     at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
     at System.Web.UI.Page.ProcessRequest() 
     at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) 
     at System.Web.UI.Page.ProcessRequest(HttpContext context) 
     at System.Web.Mvc.ViewPage.RenderView(ViewContext viewContext) 
     at System.Web.Mvc.ViewUserControl.RenderViewAndRestoreContentType(ViewPage containerPage, ViewContext viewContext) 
     at System.Web.Mvc.ViewUserControl.RenderView(ViewContext viewContext) 
     at System.Web.Mvc.WebFormView.RenderViewUserControl(ViewContext context, ViewUserControl control) 
     at System.Web.Mvc.WebFormView.Render(ViewContext viewContext, TextWriter writer) 
     at System.Web.Mvc.HtmlHelper.RenderPartialInternal(String partialViewName, ViewDataDictionary viewData, Object model, ViewEngineCollection viewEngineCollection) 
     at System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper htmlHelper, String partialViewName) 
     at ASP.views_registration_freeedition_aspx.__Renderform1(HtmlTextWriter __w, Control parameterContainer) in i:\StudentPlannerV2\trunk\Current Site\Views\Registration\FreeEdition.aspx:line 23 
     at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
     at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
     at System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) 
     at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) 
     at System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) 
     at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) 
     at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
     at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
     at System.Web.UI.Control.Render(HtmlTextWriter writer) 
     at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
     at ASP.views_shared_site_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in i:\StudentPlannerV2\trunk\Current Site\Views\Shared\Site.Master:line 53 
     at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
     at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
     at System.Web.UI.Control.Render(HtmlTextWriter writer) 
     at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
     at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
     at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
     at System.Web.UI.Page.Render(HtmlTextWriter writer) 
     at System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer) 
     at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    InnerException: System.Web.UI.ViewStateException 
     Message="Invalid viewstate. \r\n\tClient IP: 127.0.0.1\r\n\tPort: \r\n\tUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)\r\n\tViewState: /wEPDwUKLTE2OTc1MzQyNWRkiTBmkfYmU2SULSGTIy27NmZIwFs=\r\n\tReferer: http://localhost:3668/Registration/FreeEdition\r\n\tPath: /Registration/FreeEdition" 
     IsConnected=true 
     Path="/Registration/FreeEdition" 
     PersistedState="/wEPDwUKLTE2OTc1MzQyNWRkiTBmkfYmU2SULSGTIy27NmZIwFs=" 
     Referer="http://localhost:3668/Registration/FreeEdition" 
     RemoteAddress="127.0.0.1" 
     RemotePort="" 
     UserAgent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)" 
     InnerException: System.Web.HttpException 
      Message="Unable to validate data." 
      Source="System.Web" 
      ErrorCode=-2147467259 
      StackTrace: 
       at System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) 
       at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) 
      InnerException: 

我想通了我的部分观点casuing这一点,我不知道为什么。

//以下为部分观点

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 



<%= Html.Label("UserName","UserName") %> 
<%= Html.TextBox("UserName") %> 
<%= Html.ValidationMessage("UserName") %> 

<br /> 

<%= Html.Label("Password","Password") %> 
<%= Html.Password("Password")%> 
<%= Html.ValidationMessage("Password")%> 

<br /> 

<%= Html.Label("ConfirmPassword", "Confirm Password")%> 
<%= Html.Password("ConfirmPassword")%> 
<%= Html.ValidationMessage("ConfirmPassword")%> 

<br /> 

<%= Html.Label("Email","Email") %> 
<%= Html.TextBox("Email") %> 
<%= Html.ValidationMessage("Email")%> 

<br /> 


<%= Html.Label("ConfirmEmail","Confirm Email") %> 
<%= Html.TextBox("ConfirmEmail")%> 
<%= Html.ValidationMessage("ConfirmEmail")%> 

<br /> 

//下面是在母版页内容占位符的一个.aspx页面中

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> 

    <form id="form1" runat="server"> 


    <% using()) 
     { %> 
      <%= Html.ValidationSummary()%> 

      <% Html.RenderPartial("CoreRegistration"); %> 

      <%= Html.SubmitButton("CreateAccount", "Create Account")%> 

    <% } %> 




</form> 

点击创建账户使我得到错误。

回答

5

服务器端的形式,不支持在ASP.NET MVC(具体而言,本):

<form id="form1" runat="server"> 

使用Html.BeginForm()打开MVC中的一种新形式。

2

ViewState不是asp.net mvc的一部分。如果您使用依赖于ViewState的常规ASP.Net Web控件,它们将不起作用。

我会建议使用

<% using (Html.BeginForm()) {%> 

,而不是对于初学者您目前的表单标签。