日期:2014-05-18  浏览次数:20465 次

有关POST的问题
假设我们有两个页面。Default.aspx和Choice.aspx页面。我在Default.aspx页面中设置了
<form id="form1" ruant="server" action="Choice.aspx" method="post" >


  <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  <input id="Submit1" type="submit" value="submit" onclick="return Submit1_onclick()" />
   
 </form>

Default.aspx页面中的.cs 文件中我是这样些代码的:
  protected void Page_Load(object sender, EventArgs e)
  {

  if(Request.Form["TextBox1"]!=null)
  {
  Response.Write(Request.Form["TextBox1"]);
  }

  }
但是当我把那个action="Choice"的时候,就出现了错误!
请问为什么?

错误的信息是:

  验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。 




------解决方案--------------------
建议先搞清楚asp.net机制
<form id="form1" ruant="server" action="Choice.aspx" method="post" > 


<asp:TextBox ID="TextBox1" runat="server"> </asp:TextBox> 
<input id="Submit1" type="submit" value="submit" onclick="return Submit1_onclick()" /> 
  
</form> 
=============
设置ruant="server" 以后,就不能设置action到其他页面了,因为默认是提交本页面。

如果去掉ruant="server" 属性,那么form里面的
服务器控件将也不能使用。

所以你可以尝试
C# code
ScriptManager.RegisterStartupScript(UpdatePanel_ICXGV, this.GetType(), "ChangePage", "<script language = 'javascript'>alert('出错')</script>", true);

------解决方案--------------------
这个是需要在web.config里设置

参考这个
http://hi.baidu.com/honghu3000/blog/item/605571c431b257ac8326ac2e.html